Search code examples
pythonpandaspivot-tablelevels

How to swap the column header in pandas pivot table?


Following up from this question

I got a datframe after pivoting like this .

                      AVG GrossProfit      AVG PMV      Loss%         Sales      
ParentAuction       Copart   IAA        Copart   IAA   Copart IAA    Copart   IAA 
Make                                                                        
Acura               112.99  NaN         -15.53   NaN   36.46  NaN      96.0  NaN

How to change the column levels to this format of columns ?

ParentAuction                 Copart                                    IAA          
                 AVG GrossProfit AVG PMV  Loss%  Sales  AVG GrossProfit AVG PMV   Loss%   Sales  
Make                                                                          
Acura                  112.99  -15.53  36.46   96.0             NaN     NaN       NaN      NaN

Solution

  • Use swaplevel with sort_index for sorting MultiIndex:

    df = df.swaplevel(0,1, axis=1).sort_index(axis=1)
    print (df)
    ParentAuction           Copart                                  IAA          \
                   AVG GrossProfit AVG PMV  Loss% Sales AVG GrossProfit AVG PMV   
    Make                                                                          
    Acura                   112.99  -15.53  36.46  96.0             NaN     NaN   
    
    ParentAuction               
                   Loss% Sales  
    Make                        
    Acura            NaN   NaN