簡體   English   中英

從數據框中刪除所有非唯一行

[英]Removing all non-unique rows from a dataframe

抱歉,這是我的第二篇文章-如果有什么不合理的地方,請告訴我!

我正在嘗試刪除所有重復的行。 我已經嘗試過drop_duplicates()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

所以我建議你使用循環來遍歷每一行,然后在遍歷每一行時使用 if 語句將當前行與最后一行進行比較,如果它被排除,如果它不是返回行。

嘗試使用

df = df.drop_duplicates(subset='ORDER ID')

我設法從其他兩個答案中匯編了答案:

  1. 我們將找到要刪除的行。 https://stackoverflow.com/a/64105947/2681662
  2. 我們使用該數據框來刪除它。 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))

讓我們定義您的示例 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
    0       YYY

您可以根據所需的列或所有列刪除重復項,子集參數可以是列名列表。

new_df = df.drop_duplicates(subset='ORDER ID')

 ORDER ID ITEM CODE
  123       XXX
  456       XXX
  789       XXX
    0       YYY

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM