Pandas 多索引数据帧的列排序
我有一个非常大的多索引数据框,大约有500列,每列有2个子列 数据帧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
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])