Home > database >  How to sort values in pivot table by values names
How to sort values in pivot table by values names

Time:02-21

Could you, please, help me with sorting the names of values?

I have the code which forms the Table 1:

df1 = pd.pivot(data=df_selected, index='source', columns='ds', values=['y','percent_diff'])
df1 = df1.swaplevel(0,1, axis=1).sort_index(axis=1, ascending=False)#.reset_index()
df1 = df1.sort_values([df1.columns[0]], ascending=False)

So, (2022-02-20, y), (2022-02-20, percent) are columns in this table in python and source is an index.

And I send the extracted data of my dataset, which was made by the code: enter image description here

I want to swap y and percent_diff. Please, help me with that.

CodePudding user response:

Use DataFrame.reindex:

mux = pd.MultiIndex.from_product([pd.date_range('2022-01-01', periods=3),
                                  ['y','rolling', 'percent_diff','abs_diff'], 
                                  ])
df = pd.DataFrame(columns=mux, index=range(5))

df = df.reindex(['percent_diff','rolling', 'y','abs_diff'], axis=1, level=1)
print (df)
    2022-01-01                         2022-01-02                        \
  percent_diff rolling    y abs_diff percent_diff rolling    y abs_diff   
0          NaN     NaN  NaN      NaN          NaN     NaN  NaN      NaN   
1          NaN     NaN  NaN      NaN          NaN     NaN  NaN      NaN   
2          NaN     NaN  NaN      NaN          NaN     NaN  NaN      NaN   
3          NaN     NaN  NaN      NaN          NaN     NaN  NaN      NaN   
4          NaN     NaN  NaN      NaN          NaN     NaN  NaN      NaN   

    2022-01-03                        
  percent_diff rolling    y abs_diff  
0          NaN     NaN  NaN      NaN  
1          NaN     NaN  NaN      NaN  
2          NaN     NaN  NaN      NaN  
3          NaN     NaN  NaN      NaN  
4          NaN     NaN  NaN      NaN  
  • Related