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

Pandas使用pivot_table如何混合列值与列名创建三级MultiIndex

实现方案

不需要提前手动构造MultiIndex,两种常用实现方式如下:

方式1:先透视再堆叠(代码更简洁)

先用pivot_table生成列带双层索引的中间结果,再把D/E对应的列索引层转到行索引即可:

import pandas as pd

res = df.pivot_table(
    index=["A", "C"],
    columns="B",
    values=["D", "E"],
    aggfunc="first" # 避免重复值被默认聚合,无重复可省略
).stack(level=0).rename_axis(index={None: "col-name"})

方式2:先转长表再透视(逻辑更直观)

先通过melt把D/E列转成行维度的分类,再直接按你预想的参数调用pivot_table即可:

import pandas as pd

# 先把D/E列转为长格式
df_long = df.melt(
    id_vars=["A", "B", "C"],
    value_vars=["D", "E"],
    var_name="col-name"
)

# 直接按你的需求透视
res = pd.pivot_table(
    df_long,
    columns=["B"],
    values="value",
    index=["A","C","col-name"]
)

两种方法输出结果完全一致,和你预期的格式完全匹配。如果数据中存在缺失的组合,对应位置会自动填充NaN,符合你的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:45:02