首页 > 解决方案 > Pandas MultiIndex 仅一级更改顺序

问题描述

我有一个带有多索引列的数据框:

 |A    |B
 |1 |2 |1 |2
0|a  b  c  d

我想交换一级以获得:

 |A    |B
 |2 |1 |2 |1
0|b |a |d |c

但随着

df.sort_index(axis=1, level=1)

我得到:

 |A|B|A|B
 |1|1|2|2
0|a|c|b|d

请帮忙

非常感谢

标签: pythonpandasdataframemulti-index

解决方案


假设它们具有相同的标签,您可以使用reindexwith level=1

df

   A     B   
   1  2  1  2
0  a  b  c  d

df.reindex([2, 1], level=1, axis=1)

   A     B   
   2  1  2  1
0  b  a  d  c

概括地说,您可以访问MultiIndex.levels

df.reindex(df.columns.levels[1][::-1], level=1, axis=1)

   A     B   
   2  1  2  1
0  b  a  d  c

如果所有第一级标签的第二级值不同,请使用

df.loc[:, ::-1].reindex(df.columns.levels[0], level=0, axis=1)

   A     B   
   2  1  2  1
0  b  a  d  c

推荐阅读