Python 数据透视表-更改非索引列的顺序

Python 数据透视表-更改非索引列的顺序,python,pandas,Python,Pandas,我使用以下方法创建了一个透视表: table2 = pandas.pivot_table(df, index=['Salesperson'], values=['Gross Sales', 'Gross Profit'], aggfunc=numpy.sum) table2['Profit Margin'] = table2['Gross Profit'] / table2['Gross Sales'] table2_rounded = table2.round({'Gross Profit':

我使用以下方法创建了一个透视表:

table2 = pandas.pivot_table(df, index=['Salesperson'], values=['Gross Sales', 'Gross Profit'], aggfunc=numpy.sum)
table2['Profit Margin'] = table2['Gross Profit'] / table2['Gross Sales']
table2_rounded = table2.round({'Gross Profit': 2, 'Gross Sales': 2, 'Profit Margin': 2})
这给了我:

in: table2.info
out: Salesperson Gross Profit Gross Sales Profit Margin
  ((((values as row data))))

作为列。但是-总销售额应显示在总利润之前。如何更改非索引列的顺序?数据帧在我旋转之前有1000行。我到处寻找解决办法。这似乎相当基本(或应该是…)

您可以按所需顺序重新为轴编制索引。适当的方法称为
reindex\u axis


_注意:由于版本0.21.0,reindex_轴已被弃用:请改用reindex_

column_order = ['Gross Sales', 'Gross Profit', 'Profit Margin']
# before pandas 0.21.0
table3 = table2.reindex_axis(column_order, axis=1)
# after pandas 0.21.0
table3 = table2.reindex(column_order, axis=1)

方法
info
不用于显示数据帧,并且没有正确调用它。要调用
info
,请尝试键入
table2.info()
。只需键入变量名,调用打印函数[或语句],使用
head
tail
方法,或对行/列范围进行切片,就可以检查数据框。

您可以通过对数据框进行切片来重新排序列:

table3=table2[[销售总额”,“毛利”,“利润率]].copy()

请注意,我有一组括号用于表示切片,另一组括号用于括起列名列表。如果您执行
表2[‘毛销售额’、‘毛利润’、‘利润率’]
,它将抛出一个错误。此外,由于这是一个切片,省略
.copy()
将导致浅拷贝

如果您不使用可选参数,我不知道使用
reindex\u axis
有什么好处,因此任何知道这些的人都可以在评论中自由提及


如果您使用的是Spyder,您可以通过转到变量资源管理器并单击其名称来查看数据帧。

感谢您的帮助。通过从第1行的column_order变量中删除“salesson”,我能够实现我的目标。通过只使用您的代码,添加了一个没有值的新列“Salesperson”。非常感谢。啊,是的,我没有注意到销售人员是一个索引。由于版本0.21.0,不推荐立即更新我的答案。请改用reindex\u axis。