我正在尝试找到一种方法来利用pandas drop_duplicates()
来识别当值的顺序相反时行是重复的。
一个例子是,如果我试图找到客户购买苹果和香蕉的交易,但数据收集订单可能已经颠倒了这些项目。换句话说,当作为完整订单组合时,交易被视为重复,因为它由相同的项目组成。
我希望将以下内容识别为重复:
Item1 Item2
Apple Banana
Banana Apple
答案 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.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