如何按熊猫每组两列的唯一记录计数?

时间:2018-08-05 07:11:36

标签: python pandas group-by

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 个答案:

答案 0 :(得分:6)

您不需要双重分组依据:将 drop_duplicates ['b', 'c'] 用作子集,仅保留唯一的行,然后进行分组依据'a'并使用 size

df.drop_duplicates(['b', 'c']).groupby('a').size()

a
1    3
2    2
dtype: int64

答案 1 :(得分:3)

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

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