首页 > 解决方案 > 熊猫更改数据透视表中列的顺序

问题描述

数据透视表的表示看起来不像我正在寻找的东西,更具体地说是结果行的顺序。我不知道如何以正确的方式改变它。

示例 df:

test_df = pd.DataFrame({'name':['name_1','name_1','name_1','name_2','name_2','name_2','name_3','name_3','name_3'], 
                        'month':[1,2,3,1,2,3,1,2,3], 
                        'salary':[100,100,100,110,110,110,120,120,120], 
                        'status':[1,1,2,1,1,3,2,2,1]})

制作枢轴的代码:

test_df.pivot_table(index='name', columns=['month'], 
             values=['salary', 'status'])

实际输出:

       salary           status      
month       1    2    3      1  2  3
name                                
name_1    100  100  100      1  1  2
name_2    110  110  110      1  1  3
name_3    120  120  120      2  2  1

我想看到的输出:

       salary status salary status salary status             
month       1     1      2      2      3      3
name
name_1    100     1     100     1     100     2
name_2    110     1     110     1     110     3
name_3    120     2     120     2     120     1

标签: pandaspivot-table

解决方案


您将使用sort_index,指示轴和级别:

piv = test_df.pivot_table(index='name', columns=['month'], 
             values=['salary', 'status'])
piv.sort_index(axis='columns', level='month')
#       salary status salary status salary status
#month       1      1      2      2      3      3
#name                                            
#name_1    100      1    100      1    100      2
#name_2    110      1    110      1    110      3
#name_3    120      2    120      2    120      1

推荐阅读