如何关闭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
相关产品推荐
相关产品推荐

