【问题标题】:Grouping by multiple columns to find duplicate rows pandas按多列分组以查找重复的行 pandas
【发布时间】:2018-03-20 08:07:07
【问题描述】:

我有一个df

id    val1    val2
 1     1.1      2.2
 1     1.1      2.2
 2     2.1      5.5
 3     8.8      6.2
 4     1.1      2.2
 5     8.8      6.2

我想按val1 and val2 进行分组,并仅获得具有相同val1 and val2 组合多次出现的行的相似数据框。

最终df

id    val1    val2
 1     1.1      2.2
 4     1.1      2.2
 3     8.8      6.2
 5     8.8      6.2

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您需要带有参数subsetduplicated 指定列以使用keep=False 检查所有重复项以通过boolean indexing 进行掩码和过滤:

    df = df[df.duplicated(subset=['val1','val2'], keep=False)]
    print (df)
       id  val1  val2
    0   1   1.1   2.2
    1   1   1.1   2.2
    3   3   8.8   6.2
    4   4   1.1   2.2
    5   5   8.8   6.2
    

    详情:

    print (df.duplicated(subset=['val1','val2'], keep=False))
    0     True
    1     True
    2    False
    3     True
    4     True
    5     True
    dtype: bool
    

    【讨论】:

    • 如何找到这些组?我需要对 id [0,1,4] 进行分组,因为它们具有相同的数据。
    • @VenkataGogu - 使用df.groupby('val1')
    • @jezrael 你是指groupbyduplicated 之前还是之后?您可以将此添加到您的答案中吗?
    • @KLaz - 你需要df.groupby(['val1','val2'])['id'].agg(list).reset_index(name='new') 吗?
    猜你喜欢
    • 2018-07-19
    • 2019-02-16
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多