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

如何关闭Pandas pivot_table中值列名称的排序功能

解决Pandas透视表值列排序问题

默认情况下,pivot_table会对值列(非索引列)按字母顺序排序,sort=False仅控制索引的排序逻辑,无法影响值列顺序。要保留原DataFrame的列顺序,只需手动指定values参数为原数据中排除索引列后的列列表即可。

修正后的代码

import pandas as pd

data = {
"StateName" : ["Manipur", "Manipur", "Assam", "Chennai", "Delhi", "Delhi", "Assam"],
"Male Accounts" : [121, 987, 1043, 34, 209, 89, 90],
"Female Accounts" : [23, 890, 2012, 7810, 765, 902, 23],
"Small Accounts" : [90, 21, 98, 45, 56, 34, 90],
"Current Accounts" : [121, 623, 90, 76, 23, 87, 91]
}

df = pd.DataFrame(data)
print("原数据:")
print(df)

# 获取原数据中除StateName外的列,保留原有顺序
value_columns = [col for col in df.columns if col != "StateName"]
# 手动指定values参数,保持列顺序
pv_table = pd.pivot_table(df, index="StateName", sort=False, aggfunc='sum', values=value_columns)
print("\n修正后的透视表:")
print(pv_table)

原理说明

  • pivot_table未指定values时,会自动选取所有非索引列并按字母排序;
  • 手动传入原数据的列顺序列表给values参数,就能强制透视表值列沿用原DataFrame的列顺序;
  • sort=False依然负责保持索引(StateName)的原始出现顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:02:16