2017-04-20 45 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