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

pandas使用agg()函数分组聚合时避免生成多层列名的方法

问题原因

你调用agg()时传入的是列表包裹的函数[np.mean],pandas默认会将原列名、聚合函数名作为两层列索引返回,就会出现你遇到的双层列名问题。

解决方案

对应你需要的两种列名效果,分别有以下实现方式:

  • 如果你希望最终列名是mean(也就是你给出的预期输出样式),直接指定聚合列后调用聚合方法,再转为DataFrame指定列名即可:
# 写法1:用agg实现
df.groupby('Metropolitan area')['Population (2016 est.)[8]'].agg(np.mean).to_frame(name='mean')

# 写法2:直接调用mean方法更简洁
df.groupby('Metropolitan area')['Population (2016 est.)[8]'].mean().to_frame(name='mean')

运行后输出和你给出的预期完全一致。

  • 如果你希望最终保留原列名Population (2016 est.)[8],指定聚合列后直接传聚合函数(不要套列表)即可:
df.groupby('Metropolitan area')['Population (2016 est.)[8]'].agg(np.mean).to_frame()

如果需要自定义列名,也可以用agg的命名字段写法:

df.groupby('Metropolitan area').agg(
    人口均值=('Population (2016 est.)[8]', np.mean)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:54:02