熊猫会丢弃重复项;值按相反顺序排列

Car*_*rie 3 duplicates python-2.7 pandas

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

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

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

Item1   Item2
Apple   Banana
Banana  Apple
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

首先使用和 然后按行排序:apply sorteddrop_duplicates

df = df.apply(sorted, axis=1).drop_duplicates()
print (df)
   Item1   Item2
0  Apple  Banana
Run Code Online (Sandbox Code Playgroud)
#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
Run Code Online (Sandbox Code Playgroud)

另一个带有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
Run Code Online (Sandbox Code Playgroud)