繁体   English   中英

熊猫MultiIndex更改顺序仅一级

[英]Pandas MultiIndex change order of one level ONLY

我有一个带有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

请帮忙

非常感谢

假设它们具有相同的标签,则可以将reindexlevel=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

你有没有尝试过:

df.loc[:, pd.IndexSlice[:, [2, 1]]]

您仍然可以使用sort_index

df.sort_index(level=[0,1],ascending=[True,False],axis=1)
   A     B   
   2  1  2  1
0  b  a  d  c

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM