What is the difference between swaplevel() and reorder_levels()?

Viewed 1196
1 Answers

When there only two levels swaplevel and reorder_levels almost same , but when your df have more than 3 levels , personally think reorder_levels is more elegant way

For example :

idx = pd.MultiIndex.from_arrays([[1, 1, 2], [1, 2, 2], [3, 3, 3],[1,1,1]])
df = pd.DataFrame(columns=idx, index=[1, 2, 3, 4])

IF we want to change the order level=[0,1,2,3] to [3,2,1,0]

With swaplevel : need multiple calls

df.swaplevel(0,3,axis=1).swaplevel(1,2,axis=1)
     1          
     3          
     1    2     
     1    1    2
1  NaN  NaN  NaN
2  NaN  NaN  NaN
3  NaN  NaN  NaN
4  NaN  NaN  NaN

With reorder_levels : Only one call

df.reorder_levels([3,2,1,0],axis=1)
     1          
     3          
     1    2     
     1    1    2
1  NaN  NaN  NaN
2  NaN  NaN  NaN
3  NaN  NaN  NaN
4  NaN  NaN  NaN
Related