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

Pandas透视表列顺序错乱,如何按指定数值字段分组调整?

解决Pandas透视表列顺序问题

步骤1:将MES_C设为有序类别

先定义MES_C的正确排序规则(比如按月份先后),把它转换为有序类别,确保透视时列会遵循该顺序排列:

# 替换为你的MES_C实际正确顺序,支持数字或文本格式
mes_order = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
valores['MES_C'] = pd.Categorical(valores['MES_C'], categories=mes_order, ordered=True)

步骤2:执行透视并调整列结构

执行透视操作后,根据当前列的层级结构做对应调整:

情况1:透视结果列层级为「数值字段 → MES_C」

直接对列索引排序即可,确保每个数值字段下的MES_C按指定顺序排列:

# 二选一执行透视
pivot_df = valores.pivot(index='MARCA', columns='MES_C', values=['CMC','CMV','VL_VENDAS'])
# pivot_df = pd.pivot_table(valores, values=['CMC','CMV','VL_VENDAS'], index='MARCA', columns='MES_C', aggfunc='first')

# 按列层级排序
pivot_df = pivot_df.sort_index(axis=1)

情况2:透视结果列层级为「MES_C → 数值字段」

先交换列的两个层级,把数值字段移到外层,再排序:

# 二选一执行透视
pivot_df = valores.pivot(index='MARCA', columns='MES_C', values=['CMC','CMV','VL_VENDAS'])
# pivot_df = pd.pivot_table(valores, values=['CMC','CMV','VL_VENDAS'], index='MARCA', columns='MES_C', aggfunc='first')

# 交换列层级并排序
pivot_df = pivot_df.swaplevel(axis=1).sort_index(axis=1)

最终效果

处理后,列的展示顺序会变为:先完整显示CMC的所有MES_C列(按定义顺序),接着是CMV的所有MES_C列,最后是VL_VENDAS的所有MES_C列,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:15:34