#python #pandas #dataframe
Вопрос:
У меня есть df
фрейм данных, заполненный строками и столбцами, в которых есть дубликаты идентификаторов:
Index Id Type
0 a1 A
1 a2 A
2 b1 B
3 b3 B
4 a1 A
...
Когда я использую:
uniqueId = df["Id"].unique()
Я получаю список уникальных идентификаторов.
Как я могу, однако, применить эту фильтрацию ко всему фрейму данных таким образом, чтобы он сохранял структуру, но дубликаты (на основе «идентификатора») удалялись?
Ответ №1:
Похоже, вам нужен DataFrame.drop_duplicates
параметр subset
, который указывает, где находятся тестовые дубликаты:
#keep first duplicate value
df = df.drop_duplicates(subset=['Id'])
print (df)
Id Type
Index
0 a1 A
1 a2 A
2 b1 B
3 b3 B
#keep last duplicate value
df = df.drop_duplicates(subset=['Id'], keep='last')
print (df)
Id Type
Index
1 a2 A
2 b1 B
3 b3 B
4 a1 A
#remove all duplicate values
df = df.drop_duplicates(subset=['Id'], keep=False)
print (df)
Id Type
Index
1 a2 A
2 b1 B
3 b3 B