2017-12-05 1 views
1

ich einen Datenrahmen erstellt, die eine doppelte Zeile wie unten:Pandas `drop_duplicates` nicht erste Zeile nicht halten

df = pd.DataFrame({"Order Date": ["January 1, 2017", "March 15, 2017", "April 20, 2017", "June 23, 2017", "December 12, 2017", None, "April 20, 2017", "April 20, 2017"], 
     "Sales Person": ["John", "John", "Rick", "Mary", "Mary", "Rick", "Rick", "Rick"], 
     "Items Sold": [4, -999, 1, np.nan, 7, 3, 1, 1], 
     "Item Price": [4.99, 1.99, 9.99, 19.99, 0.99, 2.99, 9.99, 9.99]}) 

, die wie folgt in Jupyter aussieht: Dataframe

Wenn ich das bekommen Dupliziert es korrekt die zwei Zeilen, die Duplikate sind.

df[df.duplicated()] 

Duplicates

ich drop_duplicates dann rufen Sie das zweite Duplikat und halten Sie die erste fallen zu lassen.

df.drop_duplicates() 

Dropped

aber es sieht aus wie es die beiden Reihen zu entfernen ist, anstatt die erste zu halten. Fehle ich etwas in der drop_duplicates Methode? Der Docstring gibt an, dass der keep Parameter standardmäßig first ist und dies auch dann noch passiert, wenn ich diesen Parameter explizit einfüge.

Antwort

1

Sie haben drei duplizierten Zeile in Ihrem Beispiel keep= False mit ihnen alle

df[df.duplicated(keep=False)] 
Out[661]: 
    Item Price Items Sold  Order Date Sales Person 
2  9.99   1.0 April 20, 2017   Rick 
6  9.99   1.0 April 20, 2017   Rick 
7  9.99   1.0 April 20, 2017   Rick 

Dann zu sehen, Sie drop_duplicates halten nur die erste einer in Zeile 3 index = 2

df.drop_duplicates() 
Out[659]: 
    Item Price Items Sold   Order Date Sales Person 
0  4.99   4.0 January 1, 2017   John 
1  1.99  -999.0  March 15, 2017   John 
2  9.99   1.0  April 20, 2017   Rick 
3  19.99   NaN  June 23, 2017   Mary 
4  0.99   7.0 December 12, 2017   Mary 
5  2.99   3.0    None   Rick 
+0

Ahhhh , Aha! Danke, dass du das unterstrichen hast! – Jon

+0

@Jon yw ~ fröhliche Codierung – Wen

Verwandte Themen