熊猫掉落重复;值按相反顺序排列

时间:2017-04-20 19:45:28

标签: python-2.7 pandas duplicates

我正在尝试找到一种方法来利用pandas drop_duplicates()来识别当值的顺序​​相反时行是重复的。

一个例子是,如果我试图找到客户购买苹果和香蕉的交易,但数据收集订单可能已经颠倒了这些项目。换句话说,当作为完整订单组合时,交易被视为重复,因为它由相同的项目组成。

我希望将以下内容识别为重复:

Item1   Item2
Apple   Banana
Banana  Apple

1 个答案:

答案 0 :(得分:3)

首先使用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.sortDataFrame构造函数的另一种解决方案:

df = pd.DataFrame(np.sort(df.values, axis=1), index=df.index, columns=df.columns)
       .drop_duplicates()
print (df)
   Item1   Item2
0  Apple  Banana