2017-04-20 44 views
1

我試圖找到一種方法來利用熊貓drop_duplicates()來識別行重複時,值是相反的順序。熊貓丟棄重複;值的順序相反

一個例子是,如果我試圖找到客戶購買蘋果和香蕉的交易,但是數據收集訂單可能會顛倒這些項目。換句話說,當整個訂單合併時,交易被視爲重複,因爲它是由相同的物品組成的。

我想以下被確認爲重複:

Item1 Item2 
Apple Banana 
Banana Apple 

回答

3

首先排序行與applysorted然後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 
+0

感謝您的快速響應。這讓我發瘋,因爲我覺得它很簡單。我喜歡第三種選擇最好。欣賞它! – Carrie

+0

是的,它是最快的,因爲'numpy'。很高興可以幫助你! – jezrael

+0

最後一個選項非常好! – MaxU