2017-04-03 2 views
4

Ich habe ein Dataframe df mit Zeilen gefüllt und Spalten, in denen es doppeltes IDs:df.unique() auf ganzen Datenrahmen basierend auf einer Säule

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

Wenn ich:

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

I Erhalte eine Liste mit eindeutigen IDs.

Wie kann ich diese Filterung jedoch auf den gesamten DataFrame anwenden, so dass die Struktur beibehalten wird, aber die Duplikate (basierend auf "Id") entfernt werden?

Antwort

3

Es scheint, Sie DataFrame.drop_duplicates mit Parameter benötigen subset die Test Duplikate angeben, wo sind:

#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 
Verwandte Themen