抱歉,這是我的第二篇文章-如果有什么不合理的地方,請告訴我!
我正在嘗試洗掉所有重復的行。我已經嘗試了 的keep = False引數drop_duplicates(),但它只是沒有做正確的事情。
假設我的資料框看起來像這樣
|ORDER ID | ITEM CODE |
123 XXX
123 YYY
123 YYY
456 XXX
456 XXX
456 XXX
789 XXX
000 YYY
我希望它看起來像這樣:
|ORDER ID | ITEM CODE |
123 XXX
789 XXX
000 YYY
uj5u.com熱心網友回復:
所以我建議你使用回圈來遍歷每一行,然后在遍歷每一行時使用 if 陳述句將當前行與最后一行進行比較,如果它被排除,如果它不是回傳行。
uj5u.com熱心網友回復:
嘗試使用
df = df.drop_duplicates(subset='ORDER ID')
uj5u.com熱心網友回復:
我設法從其他兩個答案中匯編了答案:
- 我們將找到要洗掉的行。https://stackoverflow.com/a/64105947/2681662
- 我們使用該資料框來洗掉它。https://stackoverflow.com/a/44706892/2681662
查找要洗掉的行:
import pandas as pd
lst = [
[123, "XXX"],
[123, "YYY"],
[123, "YYY"],
[456, "XXX"],
[456, "XXX"],
[456, "XXX"],
[789, "XXX"],
[000, "YYY"],
]
df = pd.DataFrame(lst, columns=["ORDER ID", "ITEM CODE"])
to_drop = df[pd.DataFrame(df.sort_values(by=["ORDER ID", "ITEM CODE"]), index=df.index).duplicated()]
根據洗掉所有行 to_drop
所以整個代碼看起來像:
import pandas as pd
lst = [
[123, "XXX"],
[123, "YYY"],
[123, "YYY"],
[456, "XXX"],
[456, "XXX"],
[456, "XXX"],
[789, "XXX"],
[000, "YYY"],
]
df = pd.DataFrame(lst, columns=["ORDER ID", "ITEM CODE"])
to_drop = df[pd.DataFrame(df.sort_values(by=["ORDER ID", "ITEM CODE"]), index=df.index).duplicated()]
print(pd.merge(df,to_drop, indicator=True, how='outer')
.query('_merge=="left_only"')
.drop('_merge', axis=1))
uj5u.com熱心網友回復:
讓我們定義您的示例 DataFrame,
data = {"ORDER ID":[123, 123, 123, 456, 456, 456, 789, 000], "ITEM CODE":['XXX', 'YYY', 'YYY', 'XXX', 'XXX', 'XXX', 'XXX', 'YYY']}
df = pd.DataFrame(data)
ORDER ID ITEM CODE
123 XXX
123 YYY
123 YYY
456 XXX
456 XXX
456 XXX
789 XXX
000 YYY
您可以根據所需的列或所有列洗掉重復項,子集引數可以是列名串列。
new_df = df.drop_duplicates(subset='ORDER ID')
ORDER ID ITEM CODE
123 XXX
456 XXX
789 XXX
000 YYY
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/350287.html
上一篇:如何解決TypeError:'set'objectisnotsubscriptable?
下一篇:PythonDjangoImportError:無法從“typing_extensions”匯入名稱“Required”
