You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas的groupby操作后重命名聚合列?

解决Pandas Groupby后聚合列重命名的问题

嘿,我来帮你搞定这个问题~你遇到的rename无效的情况,主要有两个原因:一是你写的{'0':'xyz'}里把列名当成了字符串,但实际这个列名是整数0;二是rename默认不会修改原DataFrame,需要重新赋值或者加inplace=True。不过其实还有更优雅的方法,不用等到之后再改名,直接在聚合阶段就搞定,下面给你几种方案:

方案1:修正rename的用法

如果你还是想用rename,记得把列名写成整数0,并且要么重新赋值给变量,要么开启原地修改:

# 先执行你的原代码
df_result = df.groupby(['open_year','open_month','source']).size().reset_index()

# 方式A:重新赋值给新变量(推荐,避免原地修改的副作用)
df_result = df_result.rename(columns={0: 'xyz'})

# 方式B:原地修改原DataFrame
df_result.rename(columns={0: 'xyz'}, inplace=True)

方案2:聚合时直接指定列名(更直观)

用agg方法可以在聚合的同时直接定义新列名,逻辑更清晰:

df_result = df.groupby(['open_year','open_month','source'], as_index=False) \
              .agg(xyz=('source', 'size'))

这里的xyz就是你想要的新列名,括号里的'source'可以替换成DataFrame里任意存在的列(因为size是统计组内行数,和具体列无关)。

方案3:最简洁的方式——利用reset_index的name参数

这是最省事的方法,size()返回的是一个Series,它的name默认是0,我们在reset_index的时候直接用name参数把这个名字改成你要的列名,一步到位:

df_result = df.groupby(['open_year','open_month','source']).size().reset_index(name='xyz')

个人最推荐方案3,代码最短,逻辑也最直接,不用额外处理重命名的步骤~

内容的提问来源于stack exchange,提问作者HHH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:40:45