pandas pivot table - 更改非索引列的顺序

时间:2016-04-01 00:28:07

标签: 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': 2, 'Gross Sales': 2, 'Profit Margin': 2})

给了我:

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

作为列。但是 - 总销售额应该显示在毛利润之前。如何更改非索引列的顺序?在我转动之前,数据帧是1000行。我搜索了高低的解决方案。这看起来很基本(或应该是......)

2 个答案:

答案 0 :(得分:6)

您可以按所需顺序重新索引轴。适当的方法称为reindex_axis

column_order = ['Gross Sales', 'Gross Profit', 'Profit Margin']
table3 = table2.reindex_axis(column_order, axis=1)

方法info并不意味着显示DataFrame,并且没有正确调用它。要致电info,请尝试输入table2.info()。只需键入变量名称,调用print函数[或语句],使用headtail方法,或切片行/列范围,就可以检查DataFrame。

答案 1 :(得分:0)

您可以通过获取数据帧的一部分来重新排序列:

table3 = table2[['Gross Sales', 'Gross Profit', 'Profit Margin']].copy()

请注意,我有一组用于切片的括号,另一组括号用于包含列名列表。如果你执行table2['Gross Sales', 'Gross Profit', 'Profit Margin'],则会抛出错误。此外,由于这是一个切片,省略.copy()将导致浅拷贝。

如果您不使用可选参数,我不知道使用reindex_axis有什么好处,所以任何知道此类信息的人都可以在评论中随意提及。

如果你正在使用Spyder,你可以通过转到变量资源管理器并点击其名称来查看数据框。