#python #pandas
#питон #панды
Вопрос:
Дедупликация данных в двух столбцах pandas. Данные в pandas могут быть неуместны, а некоторые из них являются нулевыми.
Person Name1 Name2
0 Jet NaN
1 Edward Lach
2 NaN Jet
3 Lach Edward
Создание списков для Name1 и Name2 и посмотреть, существуют ли они. Есть ли лучший способ сделать это?
set1,set2 = list(df["Name1"]),list(df["Name2"])
Expected
Person SurName FirstName
0 Jet NaN
1 Edward Lach
Ответ №1:
Используйте numpy.sort
с заменой отсутствующих значений на DataFrame.fillna
, создайте конструктор DataFrame для возможного вызова DataFrame.duplicated
и фильтруйте boolean indexing
с помощью обратной маски by ~
:
mask = (pd.DataFrame(np.sort(df[['Name1','Name2']].fillna('missing'), axis=1), index=df.index)
.duplicated())
df = df[~mask]
print (df)
Person Name1 Name2
0 0 Jet NaN
1 1 Edward Lach
Комментарии:
1. Привет. Применим ли этот метод и к числам? Предположим, что у нас есть 10 столбцов чисел. Предположим, что каждая строка чисел имеет шансы на дублирование.
2. @MrSimple Я думаю, да, только лучше изменить
.fillna('missing')
на какое-то число, например.fillna(0)
или.fillna(-1)