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

pandas使用groupby聚合后如何显示聚合列的列名

问题说明

当前使用的测试DataFrame数据如下:

Client          Date     Amount 
Jack      10/01/2020        100
Jack      10/01/2020        200
Jack      10/01/2020        300
Jack      10/01/2020        400
Jack      12/01/2020        100
Jack      12/01/2020        100
Jack      13/01/2020        100

使用pandas的groupby函数做聚合计算时,返回结果仅展示聚合数值,不显示被聚合的Amount列名,需要保留该列名以便后续操作引用。
已尝试的代码及运行结果:

result = df.groupby(["Client", "Date"])["Amount"].sum()

运行输出:

Client          Date     
Jack      10/01/2020        1000
Jack      12/01/2020        200
Jack      13/01/2020        100

期望输出(明确展示Amount列名):

Client          Date         Amount
Jack      10/01/2020        1000
Jack      12/01/2020        200
Jack      13/01/2020        100
原因分析

上述写法返回的结果是pandas Series类型,不是DataFrame:Client和Date是该Series的多级索引,聚合计算得到的值是Series的元素值,因此不会单独展示Amount作为列名。

解决方法

任选以下一种写法即可得到带完整列名的DataFrame结果:

  • 方法1:调用reset_index()将索引转回普通列
    result = df.groupby(["Client", "Date"])["Amount"].sum().reset_index()
    
  • 方法2:groupby时传入as_index=False参数,禁止将分组字段设为索引,直接返回标准结构的DataFrame
    result = df.groupby(["Client", "Date"], as_index=False)["Amount"].sum()
    
  • 方法3:对要聚合的列使用双中括号选取,返回结果默认是DataFrame类型,再重置索引即可
    result = df.groupby(["Client", "Date"])[["Amount"]].sum().reset_index()
    

三种写法运行后输出结构完全一致,均保留Client、Date、Amount三个列名,符合预期需求。

内容的提问来源于stack exchange,提问作者The Legendary YELLOW

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:06:22