2017-04-20 9 views
1

パンダを利用して、値が逆の順番で行が重複していることを認識する方法を見つけようとしています。パンダドロップの重複。逆順の値

例として、顧客がリンゴとバナナの両方を購入する取引を見つけようとしているが、データ収集の順序によって商品が逆転している可能性があります。言い換えれば、完全な注文として結合された場合、トランザクションは同じアイテムで構成されているため、重複として認識されます。

Item1 Item2 
Apple Banana 
Banana Apple 

答えて

3

まずapplysortedとの行でソートし、次にdrop_duplicatesnumpy.sortとのもう一つの解決策

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 

は、私は次のように重複として認識されるようにしたいです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