df.уникальный() для всего фрейма данных на основе столбца

#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