Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reorder Multi-indexed dataframe columns based on reference

I have a multi-indexed dataframe with names attached to the column levels. The data table looks something like this: (df1)

                        TIME                    
         TMC    111N1   111P2   111N3   111P4   
DATE    EPOCH                   
          0     143     113      103    NaN 
          1     183     NaN      NaN    NaN 
          2     NaN     NaN      NaN    NaN 
          3     143     NaN      NaN    NaN 

I'd like to shuffle the columns around so that they match the order specified by the rows index of a reference dataframe (df2):

        A1  A2  A3    A4    A5
 Name                                                                               
 111N3  PA  PL  er  0.75543 35
 111P4  PA  PL  er  0.09413 35
 111N1  PA  PL  er  4.21557 35
 111P2  PA  PL  er  1.31989 35

i.e. the result should be (df3):

                        TIME                    
         TMC    111N3   111P4   111N1   111P2   
DATE    EPOCH                   
          0     103     NaN      143    113 
          1     NaN     NaN      183    NaN 
          2     NaN     NaN      NaN    NaN 
          3     NaN     NaN      143    NaN 
like image 883
GB7 Avatar asked Apr 29 '26 14:04

GB7


1 Answers

reindex_axis will use the labels from the other dataframe and let you specific the axis to reindex and also a particular level:

df1.reindex_axis(df2.index, axis=1, level=1)
like image 114
Zeugma Avatar answered May 01 '26 03:05

Zeugma