我正试图找到一种利用pandas的drop_duplicates()
方法来识别行数据在值反转时的重复项。
例如,如果我想要找到客户同时购买苹果和香蕉的交易记录,但数据收集顺序可能已经颠倒了这些项目。换句话说,当合并为一个完整订单时,该交易被视为重复项,因为它由相同的商品组成。
我希望以下内容被识别为重复项:
Item1 Item2
Apple Banana
Banana Apple
我正试图找到一种利用pandas的drop_duplicates()
方法来识别行数据在值反转时的重复项。
例如,如果我想要找到客户同时购买苹果和香蕉的交易记录,但数据收集顺序可能已经颠倒了这些项目。换句话说,当合并为一个完整订单时,该交易被视为重复项,因为它由相同的商品组成。
我希望以下内容被识别为重复项:
Item1 Item2
Apple Banana
Banana Apple
首先使用 apply
函数对行进行排序,然后使用 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
numpy
。很高兴能帮到你! - jezrael