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

Pandas GroupBy操作后分组列无法引用 如何实现可调用并生成新DataFrame

问题原因

你当前调用groupby聚合后,参与分组的Subcategory和year字段默认会被设为结果DataFrame的多级行索引(MultiIndex),而非普通数据列,因此无法直接通过列名引用。

解决方案

方法1:分组时添加as_index=False参数(最推荐)

在groupby方法中传入as_index=False,可以直接让分组键保留为普通数据列,不会被转为索引。
修改后的代码如下:

bikes = final_merged_df.loc[final_merged_df['Category'] == 'Bikes', ['year', 'Subcategory', 'Category', 'OrderQty']]\
        .groupby([pandas.Grouper(key='Subcategory'), pandas.Grouper(key='year')], as_index=False)\
        .sum()

运行后你就可以直接用bikes['Subcategory']调用对应字段,也可以直接作为绘图的颜色维度参数。

方法2:对已生成的聚合结果执行reset_index()

如果你已经生成了带多级索引的聚合结果,直接调用reset_index()即可把索引层级转为普通列:

# 针对你原有代码生成的带多级索引的bikes执行
bikes = bikes.reset_index()

执行后两个分组字段就会变成普通列,和聚合统计列平级。

方法3(仅临时使用场景):直接从索引取值

如果不想修改表结构,临时需要引用分组键的话,可以从多级索引中提取对应层级的值:

# 提取Subcategory维度的值
subcategory_vals = bikes.index.get_level_values('Subcategory')
# 提取year维度的值
year_vals = bikes.index.get_level_values('year')

绘图时直接把提取出的序列传给对应的维度参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:07