web-dev-qa-db-fra.com

df.unique () sur DataFrame entier basé sur une colonne

J'ai un DataFrame df rempli de lignes et de colonnes où il y a des identifiants en double:

Index   Id   Type
0       a1   A
1       a2   A
2       b1   B
3       b3   B
4       a1   A
...

Quand j'utilise:

uniqueId = df["Id"].unique() 

Je reçois une liste d'identifiants uniques.

Comment puis-je cependant appliquer ce filtrage sur l'ensemble du DataFrame de telle sorte qu'il conserve la structure mais que les doublons (basés sur "Id") soient supprimés?

15
JohnAndrews

Il semble que vous ayez besoin de DataFrame.drop_duplicates avec le paramètre subset qui spécifie où se trouvent les doublons de test:

#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
13
jezrael