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

Pandas透视DataFrame调整多级列顺序获取双值列方法

问题根因

pandas.DataFrame.pivot()在传入多个values字段时,会默认将值字段作为多级列的最顶层,因此你得到的列层级顺序是[值类型, Region, Country],和要求的[Region, Country, 值类型]顺序不符。另外你贴的代码存在两处笔误:

  • values参数中写了不存在的字段Eother info,正确字段名是other info
  • index参数中多传入了需求未提及的MATKL字段,可根据实际业务需要决定是否保留
解决方案

透视完成后通过reorder_levels()调整列的层级顺序,再按层级排序保证分块逻辑符合预期,代码如下:

# 生成基础透视表
x = df_out.pivot(
    index=['ProductGroup', 'Category', 'ProductFamily'],
    columns=['Region', 'Country'],
    values=['value', 'other info']
)

# 调整列层级顺序:原层级顺序为[值类型, Region, Country],重排为[Region, Country, 值类型]
x = x.reorder_levels([1, 2, 0], axis=1)

# 按调整后的列层级排序,确保同Region、同Country下的两个指标相邻展示
x = x.sort_index(axis=1)
可选优化

如果需要自定义各列层级的显示名称,可以追加一行代码修改:

x.columns.names = ['Region', 'Country', '指标类型']

调整后的透视表完全符合要求:

  • 列第一层按Region分块
  • 第二层在对应Region块下按Country分块
  • 第三层在对应Country下展示value和other info两个值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:57:16