Pandas change order of columns in pivot table

cbc*_*cbd 5 pivot-table pandas

The representation of pivot tabel not looks like something I looking for, to be more specific the order of the resulting rows. I can`t figure out how to change it in proper way.

Example 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]})
Run Code Online (Sandbox Code Playgroud)

code for make pivot:

test_df.pivot_table(index='name', columns=['month'], 
             values=['salary', 'status'])
Run Code Online (Sandbox Code Playgroud)

Actual output:

       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
Run Code Online (Sandbox Code Playgroud)

The output I want to see:

       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
Run Code Online (Sandbox Code Playgroud)

Jon*_*oop 7

您将使用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
Run Code Online (Sandbox Code Playgroud)


Chr*_*s A 6

DataFrame.sort_indexaxis=1,level=1参数一起使用

(test_df.pivot_table(index='name', columns=['month'], 
             values=['salary', 'status'])
 .sort_index(axis=1, level=1))
Run Code Online (Sandbox Code Playgroud)

[出去]

       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
Run Code Online (Sandbox Code Playgroud)