【问题标题】:Pandas drop duplicates; values in reverse order熊猫丢弃重复;逆序的值
【发布时间】:2017-04-21 03:54:45
【问题描述】:

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

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

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

Item1   Item2
Apple   Banana
Banana  Apple

【问题讨论】:

    标签: python-2.7 pandas duplicates


    【解决方案1】:

    先用applysorted按行排序,然后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
    

    【讨论】:

    • 感谢您的快速回复。这让我发疯,因为我认为这很简单。我最喜欢第三种选择。欣赏!
    • 是的,它是最快的,因为numpy。很高兴能为您提供帮助!
    • 最后一个选项很不错!
    • @MaxU -谢谢。
    • 选项 2 仅在应用函数上设置 result_type='expand' 后才对我有用
    猜你喜欢
    • 2018-12-15
    • 2020-05-09
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 2019-12-12
    • 2022-01-09
    相关资源
    最近更新 更多