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

如何调整Pandas透视表中列多级索引的分组顺序

如何调整Pandas透视表中列多级索引的分组顺序

嘿,这个问题我之前折腾过好一会儿,Pandas透视表默认的列层级顺序确实和Excel不一样,但调整起来其实很简单!

先理清楚现状:你当前的透视表列层级是「指标(MoneySpent/PersonID)」作为第一级分组,「停留时长类别」嵌套在里面;而你想要反过来,让「停留时长」作为第一级分组,每个分组下再展示对应的人数和消费总额——这正是Excel透视表的默认逻辑。

解决方案:调换列多级索引的层级顺序

你已经生成了透视表pv,只需要执行以下两步操作就能得到想要的结构:

# 调换列的多级索引层级,将停留时长类别放到第一级,指标放到第二级
pv = pv.reorder_levels([1, 0], axis=1)
# 按列索引排序,让同一停留时长下的指标列集中在一起
pv = pv.sort_index(axis=1)

代码解释:

  • reorder_levels([1, 0], axis=1):原透视表的列索引分为两级,第一级是指标(位置0),第二级是停留时长类别(位置1),这个方法就是把这两个层级的位置调换,让停留时长成为第一级分组。
  • sort_index(axis=1):这一步是为了让相同停留时长的列挨在一起,避免出现分散的情况,保证结构和Excel透视表一样整齐。

调整后的效果

执行完上面的代码后,你的透视表就会变成这样:

StayDuration    2-7 days          7-30 days          < 2 days        
                PersonID MoneySpent PersonID MoneySpent PersonID MoneySpent
City                                                                        
Anaheim                1       1710        2       4130        1       1100
Rochester              1        100        3       2920        1        100
Toledo                 2        510        1       1240        2       1500

可选优化:给层级添加明确名称

如果想要让表头的含义更清晰,还可以给列的多级索引加上名称:

pv.columns.names = ['StayDuration', 'Metric']

这样表头的层级就更一目了然啦!

备注:内容来源于stack exchange,提问作者Alexander Zorin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 10:38:03