如何解决pandas groupby聚合时嵌套重命名报错并自定义计数列名
Pandas groupby 聚合自定义列名解决方案
你遇到的报错是因为 pandas 0.25及以上版本已经废弃了嵌套字典的agg列重命名语法,所以原写法会触发重命名冲突错误,可采用以下几种方案实现需求:
方案1:官方推荐的Named Aggregation写法(适配所有新版pandas)
直接在agg方法内通过自定义列名 = (聚合目标列, 聚合方法)的语法完成统计+重命名:
df_temp = df.groupby(['_SubjectId', 'QuestionTypeId'], as_index=True).agg( question_type_count = ('QuestionTypeId', 'count') )
该写法支持同时设置多个聚合规则,需要新增其他统计指标时直接加参数即可,比如同时统计计数和去重计数:
df_temp = df.groupby(['_SubjectId', 'QuestionTypeId'], as_index=True).agg( question_type_count = ('QuestionTypeId', 'count'), unique_question_count = ('QuestionTypeId', 'nunique') )
方案2:先统计后重命名(兼容所有pandas版本)
保留你原本可运行的统计逻辑,后续通过rename方法修改列名即可:
df_temp = df.groupby(['_SubjectId', 'QuestionTypeId'], as_index=True)['QuestionTypeId'].count().rename('question_type_count')
如果后续需要把分组索引转为普通列,只需要追加.reset_index()即可。
内容的提问来源于stack exchange,提问作者Dhruv Singhal
相关产品推荐
相关产品推荐

