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



与Panda中如何按两列计算唯一记录相同?,仅限每组。我试过了:

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

您不需要双重分组方式:使用drop_duplicates['b', 'c']作为子集,只保留唯一的行,然后按'a'分组并使用size

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

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

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

最新更新