![](/img/trans.png)
[英]How to get dropped rows when using drop_duplicates (Pandas DataFrame)?
[英]Using `drop_duplicates` on a Pandas dataframe isn't dropping rows
情況
我有類似於下面的 dataframe(盡管我已經刪除了這個例子中的許多行,如“索引”列所示):
df
指數 | ID | 名稱 | 最近更新時間 |
---|---|---|---|
0 | 1518 | 制作者 | 2022-12-31T03:02:00.000Z |
1個 | 1518 | 制作者 | 2022-12-31T02:02:00.000Z |
2個 | 1518 | 制作者 | 2022-12-31T14:02:00.000Z |
3個 | 1518 | 制作者 | 2022-12-31T16:02:00.000Z |
23 | 1518 | 制作者 | 2022-12-31T17:02:00.000Z |
24 | 2280 | 文件幣 | 2022-12-31T01:02:00.000Z |
25 | 2280 | 文件幣 | 2022-12-31T03:01:00.000Z |
26 | 2280 | 文件幣 | 2022-12-31T02:01:00.000Z |
27 | 2280 | 文件幣 | 2022-12-31T00:02:00.000Z |
47 | 2280 | 文件幣 | 2022-12-31T08:02:00.000Z |
48歲 | 4558 | 流 | 2022-12-31T01:02:00.000Z |
49 | 4558 | 流 | 2022-12-31T02:01:00.000Z |
71 | 4558 | 流 | 2022-12-31T05:02:00.000Z |
72 | 5026 | 蘭花 | 2022-12-31T01:02:00.000Z |
73 | 5026 | 蘭花 | 2022-12-31T03:02:00.000Z |
74 | 5026 | 蘭花 | 2022-12-31T02:01:00.000Z |
75 | 5026 | 蘭花 | 2022-12-31T00:02:00.000Z |
我想要上面 dataframe 的一個版本,但每個id
參數只有 1 行。 保留最后一例。
這是我的代碼:
df.drop_duplicates(subset=['id'], keep='last')
期待
新的 df 將只保留 4 行,即 dataframe df
中每個“id”值的“最后”實例。
結果
運行drop_duplicates
命令后, df
返回完全相同的 dataframe。與我嘗試drop_duplicates
之前的形狀相同。
我一直在嘗試使用這篇文章來解決這個問題,但我發現有些事情我沒有做對:
對於為什么不刪除具有重復“id”值的行的最后一個實例的任何輸入,我將不勝感激。
您應該添加df.drop_duplicates(subset=['id'], keep='last', inplace=True)
。 如果您不這樣做,則只會返回一份副本。 通過指定 inplace=True,修改 dataframe。
請參閱文檔: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.drop_duplicates.html
希望這可以幫助!
重新分配變量:
str = """
index id name last_updated
0 1518 Maker 2022-12-31T03:02:00.000Z
1 1518 Maker 2022-12-31T02:02:00.000Z
2 1518 Maker 2022-12-31T14:02:00.000Z
3 1518 Maker 2022-12-31T16:02:00.000Z
23 1518 Maker 2022-12-31T17:02:00.000Z
24 2280 Filecoin 2022-12-31T01:02:00.000Z
25 2280 Filecoin 2022-12-31T03:01:00.000Z
26 2280 Filecoin 2022-12-31T02:01:00.000Z
27 2280 Filecoin 2022-12-31T00:02:00.000Z
47 2280 Filecoin 2022-12-31T08:02:00.000Z
48 4558 Flow 2022-12-31T01:02:00.000Z
49 4558 Flow 2022-12-31T02:01:00.000Z
71 4558 Flow 2022-12-31T05:02:00.000Z
72 5026 Orchid 2022-12-31T01:02:00.000Z
73 5026 Orchid 2022-12-31T03:02:00.000Z
74 5026 Orchid 2022-12-31T02:01:00.000Z
75 5026 Orchid 2022-12-31T00:02:00.000Z
"""
csvStringIO = StringIO(str)
df = pd.read_csv(csvStringIO, sep="\t")
df = df.drop_duplicates(subset=['id'], keep='last')
print(df) # 4 rows
或者inplace
設置為True
:
df.drop_duplicates(subset=['id'], keep='last', inplace=True)
print(df) # 4 rows
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.