【问题标题】:How to find duplicates from a Pandas dataframe based upon the values in other columns?如何根据其他列中的值从 Pandas 数据框中查找重复项?
【发布时间】:2019-08-20 14:40:36
【问题描述】:

我有一个 Pandas Df-

A= 
[period store  item
1        32     'A'
1        34     'A'
1        32     'B'
1        34     'B'
2        42     'X'
2        44     'X'
2        42     'Y'
2        44     'Y']

我需要实现这样的东西: 如果某个项目与该特定时期的任何其他项目具有相同的商店集,则这些项目是重复的。 所以在这种情况下,A 和 B 是重复的,因为它们在各自的时期拥有相同的商店。

我已尝试使用以下方法将其转换为嵌套字典:

dicta = {p: g.groupby('items')['store'].apply(tuple).to_dict()
         for p, g in mkt.groupby('period')}

返回给我这样的字典:

dicta = {1: {'A': (32, 34),'B': (32, 34)}, 2: {'X': (42, 44),'Y': (42, 44)}}

... 所以最后我想要一本这样的字典。

{1:(A,B),2:(X,Y)} 虽然,我无法找到如何找到重复项目的任何逻辑。 有没有其他方法可以找到那些重复的项目

【问题讨论】:

    标签: python pandas python-2.7 dataframe


    【解决方案1】:

    您可以简单地使用.duplicated。确保将['period', 'store'] 作为subsetkeep 作为False 传递,以便返回所有行。

     print(A[A.duplicated(subset=['period', 'store'], keep=False)])
    

    输出

      period store item
    0      1    32    A
    1      1    34    A
    2      1    32    B
    3      1    34    B
    4      2    42    X
    5      2    44    X
    6      2    42    Y
    7      2    44    Y
    

    请注意,根据您指定的逻辑,所有行都是重复的。

    EDIT在OP详细说明预期格式后,我建议

    duplicates = A[A.duplicated(subset=['period', 'store'], keep=False)]
    output = {g: tuple(df['item'].unique()) for g, df in duplicates.groupby('period')}
    

    那么output 就是{1: ('A', 'B'), 2: ('X', 'Y')}

    【讨论】:

    • 嗨,感谢您的快速帮助,但我真正需要的是这样的... 1=(A,B) ,2=(A,B) ,其中 1 和 2 是句点和A,B 是该时期的重复项目,并且具有相同的商店集。我知道我问了很多,但这真的很紧急,考虑到我在这方面的知识有限,我必须寻求帮助。
    • @thebigshaikh 那么它与问题中的dicta 有什么不同?
    • 那本字典没有给我与重复的期间 ID 对应的项目
    • @thebigshaikh 是的,确实如此。外键是12
    • 字典只是给了我这个,dicta = {1: {'A': (32, 34),'B': (32, 34)}, 2: {'X': (42, 44),'Y': (42, 44)}} ,而我需要这样的东西 {1:(A,B),2:(X,Y)} ,这里 1 和 2 是句点和 A , B,X,Y 是商店集完全相同的商品。字典只是以不同形式表示原始数据帧
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2020-03-16
    • 2020-07-18
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    相关资源
    最近更新 更多