#python #pandas
Вопрос:
У меня есть набор данных с 50 столбцами. Я хочу удалить повторяющиеся значения с 4-го по 50-й столбцы, сохранив строки. Например, повторяющиеся значения из 4-го столбца следует изменить на значения NaN, затем на 5-й и т. Д.
Не могли бы вы, пожалуйста, помочь мне?
Ответ №1:
Использовать Series.duplicated
со Series.mask
столбцами, выбранными в DataFrame.iloc
функции лямбда в DataFrame.apply
:
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(3, size=(5, 60)))
#print (df)
f = lambda x: x.mask(x.duplicated())
df.iloc[:, 4:51] = df.iloc[:, 4:51].apply(f)
print (df)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 0 2 1 0.0 1.0 0.0 0.0 0.0 2.0 1.0 2.0 2.0 2.0 1.0 0.0
1 2 0 0 2 NaN 2.0 2.0 2.0 NaN NaN 2.0 1.0 0.0 1.0 NaN 1.0
2 1 2 2 1 1.0 0.0 NaN NaN 1.0 NaN NaN 0.0 1.0 NaN NaN NaN
3 2 0 1 1 2.0 NaN 1.0 NaN 2.0 NaN NaN NaN NaN 0.0 NaN NaN
4 2 0 1 0 NaN NaN NaN 1.0 NaN 1.0 NaN NaN NaN NaN NaN NaN
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
0 0.0 0.0 0.0 2.0 0.0 1.0 1.0 1.0 2.0 1.0 2.0 1.0 1.0 2.0 2.0
1 1.0 1.0 1.0 0.0 1.0 2.0 NaN 0.0 NaN NaN NaN NaN 0.0 0.0 0.0
2 NaN NaN NaN NaN NaN NaN 0.0 NaN 1.0 NaN 0.0 NaN 2.0 1.0 NaN
3 NaN NaN 2.0 1.0 NaN NaN NaN NaN NaN 2.0 NaN 0.0 NaN NaN NaN
4 NaN NaN NaN NaN NaN 0.0 NaN NaN 0.0 0.0 NaN 2.0 NaN NaN 1.0
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
0 2.0 2.0 1.0 0.0 2.0 2.0 0.0 2.0 0.0 1.0 0.0 1.0 2.0 2.0 0.0
1 0.0 NaN 0.0 1.0 NaN 0.0 2.0 1.0 2.0 NaN 1.0 NaN NaN NaN 2.0
2 NaN 0.0 NaN 2.0 0.0 NaN 1.0 NaN NaN 2.0 NaN NaN NaN 0.0 NaN
3 1.0 1.0 NaN NaN 1.0 NaN NaN NaN NaN NaN 2.0 2.0 1.0 1.0 NaN
4 NaN NaN 2.0 NaN NaN NaN NaN NaN NaN 0.0 NaN NaN NaN NaN 1.0
46 47 48 49 50 51 52 53 54 55 56 57 58 59
0 1.0 1.0 2.0 2.0 1.0 0 2 0 2 2 0 2 1 2
1 0.0 0.0 1.0 0.0 2.0 1 0 2 1 1 1 2 2 1
2 2.0 NaN NaN 1.0 NaN 2 0 1 2 1 2 2 1 1
3 NaN 2.0 NaN NaN NaN 2 2 2 1 1 2 2 2 1
4 NaN NaN NaN NaN NaN 1 1 1 0 1 2 2 1 0
Комментарии:
1. Спасибо! Это помогло