簡體   English   中英

從數據框中僅獲取唯一行

[英]Getting ONLY unique rows from a dataframe

我正在嘗試刪除所有重復的行。 我只想要唯一的行。 我已經用 `subset = [ORDER ID, ITEM CODE] 嘗試了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

如您所見,子集將同時是訂單 ID 和商品代碼列,理想情況下我們會丟失第 2-6 行。 (實際數據集有更多列。)

嘗試修改您的子集以僅包含ORDER ID

df.drop_duplicated(subset=['ORDER ID'])

不確定你的問題是什么。 工作正常。

import pandas as pd


data = [[123,         'XXX', 11],    
[123,         'YYY', 22],
[123,         'YYY', 33],
[456,         'XXX', 44],
[456,         'XXX', 55],
[456,         'XXX', 66],
[789,         'XXX',77],
[000,         'YYY',88]]

columns = ['ORDER ID','ITEM CODE','extra column']

df = pd.DataFrame(data, columns=columns)

df = df.drop_duplicates(subset = ['ORDER ID','ITEM CODE'], keep=False)

輸出:

print(df)
   ORDER ID ITEM CODE  extra column
0       123       XXX            11
1       123       YYY            22
2       123       YYY            33
3       456       XXX            44
4       456       XXX            55
5       456       XXX            66
6       789       XXX            77
7         0       YYY            88

print(df)
   ORDER ID ITEM CODE  extra column
0       123       XXX            11
6       789       XXX            77
7         0       YYY            88

如果您無法讓 drop_duplicates 工作,您可以使用 numpy.unique 作為解決方法。

df['ORDER_ID'] = np.unique(df['ORDER_ID'])
df['ITEM_CODE'] = np.unique(df['ITEM_CODE'])   

暫無
暫無

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

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