Pandas多列分组聚合如何同时获取分组计数与col_D均值
实现代码修改方案
你可以直接调整agg()方法的传参,同时给col_D配置均值、计数两个聚合规则即可,推荐使用pandas的命名聚合写法,生成的列名无需额外二次处理:
df.groupby(['col_A','col_B','col_C'], as_index=False).agg( col_D_mean = ('col_D', 'mean'), group_record_count = ('col_D', 'count') )
如果你习惯保留原有的reset_index()写法,也可以用如下格式:
df.groupby(['col_A','col_B','col_C']).agg( col_D_mean = ('col_D', 'mean'), group_record_count = ('col_D', 'count') ).reset_index()
补充说明
- 上述写法中的
count聚合会排除col_D列为空的记录,如果需要统计分组的所有行数(包含col_D为空的行),可以将计数逻辑改为group_record_count = ('col_A', 'size'),size聚合会直接统计分组的总记录数,不会跳过空值。 - 如果你不需要自定义列名,也可以用字典传列表的简化写法,不过生成的结果会带有多级列索引,需要额外做扁平化处理:
# 简化写法,返回多级列索引结果 df.groupby(['col_A','col_B','col_C']).agg({'col_D':['mean','count']}).reset_index()
内容的提问来源于stack exchange,提问作者Prakash
相关产品推荐
相关产品推荐

