1
我試圖找到一種方法來利用熊貓drop_duplicates()
來識別行重複時,值是相反的順序。熊貓丟棄重複;值的順序相反
一個例子是,如果我試圖找到客戶購買蘋果和香蕉的交易,但是數據收集訂單可能會顛倒這些項目。換句話說,當整個訂單合併時,交易被視爲重複,因爲它是由相同的物品組成的。
我想以下被確認爲重複:
Item1 Item2
Apple Banana
Banana Apple
我試圖找到一種方法來利用熊貓drop_duplicates()
來識別行重複時,值是相反的順序。熊貓丟棄重複;值的順序相反
一個例子是,如果我試圖找到客戶購買蘋果和香蕉的交易,但是數據收集訂單可能會顛倒這些項目。換句話說,當整個訂單合併時,交易被視爲重複,因爲它是由相同的物品組成的。
我想以下被確認爲重複:
Item1 Item2
Apple Banana
Banana Apple
首先排序行與apply
sorted
然後drop_duplicates
:
df = df.apply(sorted, axis=1).drop_duplicates()
print (df)
Item1 Item2
0 Apple Banana
#if need specify columns
cols = ['Item1','Item2']
df[cols] = df[cols].apply(sorted, axis=1)
df = df.drop_duplicates(subset=cols)
print (df)
Item1 Item2
0 Apple Banana
與numpy.sort
和另一種解決方案DataFrame
構造函數:
df = pd.DataFrame(np.sort(df.values, axis=1), index=df.index, columns=df.columns)
.drop_duplicates()
print (df)
Item1 Item2
0 Apple Banana
感謝您的快速響應。這讓我發瘋,因爲我覺得它很簡單。我喜歡第三種選擇最好。欣賞它! – Carrie
是的,它是最快的,因爲'numpy'。很高興可以幫助你! – jezrael
最後一個選項非常好! – MaxU