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