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

如何将Pandas GroupBy对象转换为常规DataFrame并进行透视操作

解决方法:将Pandas GroupBy对象转换为普通DataFrame并执行Pivot

第一步:把GroupBy对象转换为目标DataFrame

要把GroupBy对象的所有索引和列都转为普通DataFrame的列,最直接的方法是用reset_index()——它会自动将GroupBy的多级索引(如果有的话)转成DataFrame的列,同时保留聚合后的数值列。

假设你的GroupBy对象名为grouped_data,执行以下代码:

# 转换为普通DataFrame,将索引转为列
df = grouped_data.reset_index()

# 重命名数值列(匹配你想要的"Items"列名)
df = df.rename(columns={'items': 'Items'})

执行后就能得到完全符合需求的DataFrame:

month_nameyearItems
Apr200198714
Dec2000146381
Feb200182279
Jan200177016
Mar2001102462
May200153898

如果你的GroupBy操作是直接从原DataFrame聚合而来,也可以一步到位:

# 假设原DataFrame叫original_df,按month_name和year分组聚合items列
df = original_df.groupby(['month_name', 'year'])['items'].sum().reset_index().rename(columns={'items': 'Items'})

第二步:执行Pivot操作

拿到目标DataFrame后,你可以根据需求选择pivot()或pivot_table()进行数据重塑:

基础Pivot(无重复分组组合)

如果每个(year, month_name)组合都是唯一的,直接用pivot()生成宽表即可:

# 以year为行索引,month_name为列,Items为值
pivoted_df = df.pivot(index='year', columns='month_name', values='Items')

# 把缺失月份的NaN填充为0(可选)
pivoted_df = pivoted_df.fillna(0)

处理重复分组组合(Pivot Table)

如果存在重复的(year, month_name)组合,推荐用pivot_table()指定聚合函数来处理:

# 自动聚合重复组合,填充缺失值为0
pivoted_df = df.pivot_table(
    index='year',
    columns='month_name',
    values='Items',
    aggfunc='sum',  # 可根据需求替换为mean/count等
    fill_value=0
)

这样生成的结果就能直接用于后续的分析或可视化工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:34:30