[英]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
请帮忙
非常感谢
假设它们具有相同的标签,则可以将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
概括地说,您可以访问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.