Pandas MultiIndex 仅更改一级顺序

Tom*_*asz 6 python multi-index dataframe pandas

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

 |A    |B
 |1 |2 |1 |2
0|a  b  c  d
Run Code Online (Sandbox Code Playgroud)

我想交换一级以获得:

 |A    |B
 |2 |1 |2 |1
0|b |a |d |c
Run Code Online (Sandbox Code Playgroud)

但与

df.sort_index(axis=1, level=1)
Run Code Online (Sandbox Code Playgroud)

我得到:

 |A|B|A|B
 |1|1|2|2
0|a|c|b|d
Run Code Online (Sandbox Code Playgroud)

请帮忙

非常感谢

cs9*_*s95 6

假设它们具有相同的标签,您可以reindex使用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
Run Code Online (Sandbox Code Playgroud)

概括而言,您可以访问MultiIndex.levels

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

   A     B   
   2  1  2  1
0  b  a  d  c
Run Code Online (Sandbox Code Playgroud)

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

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

   A     B   
   2  1  2  1
0  b  a  d  c
Run Code Online (Sandbox Code Playgroud)