代码之家  ›  专栏  ›  技术社区  ›  ihadanny

如何在熊猫中按每组两列计算唯一记录?

  •  3
  • ihadanny  · 技术社区  · 6 年前

    等同于 How to count unique records by two columns in pandas? ,仅限每组。我试过:

    df = pd.DataFrame({'a': [1,1,1,2,2], 'b':[10,10,20,30,30], 'c':[5,7,7,11,17]})
    df.groupby('a').groupby(['b', 'c']).ngroups
    

    它会抛出 AttributeError .

    2 回复  |  直到 6 年前
        1
  •  3
  •   DYZ    6 年前

    您需要将函数应用于第一个分组的结果:

    df.groupby('a').apply(lambda x: x.groupby(['b', 'c']).ngroups)
    #a
    #1    3
    #2    2
    
        2
  •  6
  •   user3483203    6 年前

    你不需要双重分组:使用 drop_duplicates 具有 ['b', 'c'] 作为子集,只保留唯一的行,然后groupby 'a' 使用 size :

    df.drop_duplicates(['b', 'c']).groupby('a').size()
    
    a
    1    3
    2    2
    dtype: int64