2
Out[1015]: gp2
department  MOBILE      QA      TA     WEB MOBILE     QA     TA    WEB
           minutes minutes minutes minutes growth growth growth growth
period                                                                
2016-12-24     NaN     NaN   140.0   400.0    NaN    NaN    0.0  260.0
2016-12-25     NaN     NaN     NaN    80.0    NaN    NaN    NaN -320.0
2016-12-26     NaN     NaN     NaN    20.0    NaN    NaN    NaN  -60.0
2016-12-27     NaN    45.0     NaN   180.0    NaN   25.0    NaN  135.0
2016-12-28   600.0     NaN     NaN    15.0  420.0    NaN    NaN -585.0
...            ...     ...     ...     ...    ...    ...    ...    ...
2017-01-03     NaN     NaN     NaN    80.0    NaN    NaN    NaN -110.0
2017-01-04    20.0     NaN     NaN     NaN  -60.0    NaN    NaN    NaN
2017-02-01   120.0     NaN     NaN     NaN  100.0    NaN    NaN    NaN
2017-02-02    45.0     NaN     NaN     NaN  -75.0    NaN    NaN    NaN
2017-02-03     NaN    45.0     NaN    30.0    NaN    0.0    NaN  -15.0

I need MOBILE.minutes and MOBILE.growth to be one after another.

I tried this

In [1019]:gp2.columns = gp2.columns.sort_values()
In [1020]: gp2
Out[1020]: 
department MOBILE             QA             TA            WEB        
           growth minutes growth minutes growth minutes growth minutes
period                                                                
2016-12-24    NaN     NaN  140.0   400.0    NaN     NaN    0.0   260.0
2016-12-25    NaN     NaN    NaN    80.0    NaN     NaN    NaN  -320.0
2016-12-26    NaN     NaN    NaN    20.0    NaN     NaN    NaN   -60.0
2016-12-27    NaN    45.0    NaN   180.0    NaN    25.0    NaN   135.0
2016-12-28  600.0     NaN    NaN    15.0  420.0     NaN    NaN  -585.0
...           ...     ...    ...     ...    ...     ...    ...     ...
2017-01-03    NaN     NaN    NaN    80.0    NaN     NaN    NaN  -110.0
2017-01-04   20.0     NaN    NaN     NaN  -60.0     NaN    NaN     NaN
2017-02-01  120.0     NaN    NaN     NaN  100.0     NaN    NaN     NaN
2017-02-02   45.0     NaN    NaN     NaN  -75.0     NaN    NaN     NaN
2017-02-03    NaN    45.0    NaN    30.0    NaN     0.0    NaN   -15.0

It sorted just the columns but didn't assign them proper values.

0

1 Answer 1

6

Just use df.sort_index:

df = df.sort_index(level=[0, 1], axis=1)
print(df)

           MOBILE             QA             TA            WEB        
           growth minutes growth minutes growth minutes growth minutes
period                                                                
2016-12-24    NaN     NaN    NaN     NaN    0.0   140.0  260.0   400.0
2016-12-25    NaN     NaN    NaN     NaN    NaN     NaN -320.0    80.0
2016-12-26    NaN     NaN    NaN     NaN    NaN     NaN  -60.0    20.0
2016-12-27    NaN     NaN   25.0    45.0    NaN     NaN  135.0   180.0
2016-12-28  420.0   600.0    NaN     NaN    NaN     NaN -585.0    15.0
2017-01-03    NaN     NaN    NaN     NaN    NaN     NaN -110.0    80.0
2017-01-04  -60.0    20.0    NaN     NaN    NaN     NaN    NaN     NaN
2017-02-01  100.0   120.0    NaN     NaN    NaN     NaN    NaN     NaN
2017-02-02  -75.0    45.0    NaN     NaN    NaN     NaN    NaN     NaN
2017-02-03    NaN     NaN    0.0    45.0    NaN     NaN  -15.0    30.0
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.