[英]Pandas MultiIndex change order of one level ONLY
I have a dataframe with multiindex columns: 我有一个带有multiindex列的数据框:
|A |B
|1 |2 |1 |2
0|a b c d
I would like to swap level one to get: 我想交换一级以获得:
|A |B
|2 |1 |2 |1
0|b |a |d |c
But with 但是随着
df.sort_index(axis=1, level=1)
I get: 我得到:
|A|B|A|B
|1|1|2|2
0|a|c|b|d
Please help 请帮忙
Many thanks 非常感谢
Assuming they have the same label, you can use reindex
with level=1
: 假设它们具有相同的标签,则可以将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
To generalise, you can access MultiIndex.levels
: 概括地说,您可以访问MultiIndex.levels
:
df.reindex(df.columns.levels[1][::-1], level=1, axis=1)
A B
2 1 2 1
0 b a d c
If the second level values are not the same for all first level labels, use 如果所有第一级标签的第二级值都不相同,请使用
df.loc[:, ::-1].reindex(df.columns.levels[0], level=0, axis=1)
A B
2 1 2 1
0 b a d c
Have you tried: 你有没有尝试过:
df.loc[:, pd.IndexSlice[:, [2, 1]]]
? ?
You still can using sort_index
您仍然可以使用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.