Pandas 多索引数据帧的列排序

Pandas 多索引数据帧的列排序,pandas,python-3.5,Pandas,Python 3.5,我有一个非常大的多索引数据框,大约有500列,每列有2个子列 数据帧df如下所示: B2 B5 B3 bkt A1 A2 A2 A1 Z2 C1 Date 2019-06-11

我有一个非常大的多索引数据框,大约有500列,每列有2个子列

数据帧
df
如下所示:

                  B2                  B5             B3
bkt              A1      A2           A2      A1     Z2      C1
Date                                                                        
2019-06-11       0.8     0.2          -6.0    -0.8   -4.1    -0.6    
2019-06-12       0.8     0.2          -6.9    -1.6   -5.3    -1.2    

df.columns
MultiIndex(levels=[['B2', 'B5', 'B3', .....], ['A1', 'A2' ......]],
           labels=[[1, 1, ....], [1, 0, ....]],
           names=[None, 'bkt'])
我尝试仅对列名进行排序,并将值保留在每列中,以获得以下所需的输出:

                 B2                  B3             B5
bkt              A1      A2          C1      Z2     A1      A2
Date                                                                        
2019-06-11       ..
2019-06-12       ..
表示原始数据帧中的值。我只是没有重新打字

安装程序 使用并重新分配

df.columns=df.sort_index(axis=1,level=[0,1],ascending=[True,False]).columns
从piR开始,我们不需要创建df的副本,只需修改列即可

df.columns=df.columns.sort_values(ascending=[True, False])

排序索引(级别=0,轴=1)?如何修改上述代码,使其在级别“B2 B5 B3”上按升序排序,在“A1 A2 A1 Z2 C1”上按降序排序?我不想就此开始另一篇文章。这样做是为了避免创建新的数据帧,而只关注索引本身的排序
df.columns=df.columns.sort_值(升序=[True,False])
@piRSquared这是真的:-)我一直对你们解决复杂问题的聪明方法很感兴趣:)但是我不确定@piRSquared解决方案是否有效。您的原始解决方案确实有效。
df.columns=df.columns.sort_values(ascending=[True, False])