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

如何将DataFrame行多索引中的聚合方法维度转为列?

解决方案

你可以用unstack()方法快速实现这个需求——它专门用于将行多索引的指定层级转移到列维度,搭配reset_index()整理结构就能得到目标表格。

示例操作

假设你的原始DataFrame结构如下(行是EntityType+聚合方法的多索引,列是单索引数值列):

import pandas as pd

# 构造示例数据
data = {'Value': [10, 20, 30, 40]}
multi_index = pd.MultiIndex.from_tuples(
    [('foo', 'sum'), ('foo', 'mean'), ('bar', 'sum'), ('bar', 'mean')],
    names=['EntityType', 'AggMethod']
)
df = pd.DataFrame(data, index=multi_index)

原始表格输出:

Value
EntityType AggMethod       
foo        sum          10
           mean         20
bar        sum          30
           mean         40

执行以下代码完成转换:

# 将聚合方法索引层级转到列
transformed_df = df.unstack(level='AggMethod').reset_index()
# 整理列名,移除多级列的外层标签
transformed_df.columns = ['EntityType', 'mean', 'sum']

最终得到的目标结构:

EntityType  mean  sum
0        foo    20   10
1        bar    40   30

关键细节

  • unstack(level='AggMethod'):通过指定索引层级名称,精准把行中的聚合方法维度转为列
  • reset_index():将剩余的EntityType索引转回普通列,让表格结构更直观
  • 后续新增其他EntityType(如'baz')时,直接复用这段代码即可自动适配,无需调整逻辑

如果你的多索引层级顺序不同,只需修改unstack()的level参数(可以用层级名称或索引位置,比如level=1)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:37:10