Python 3.x 按名称重新排列多索引列
我有一个具有多索引列的df,类似于此格式:Python 3.x 按名称重新排列多索引列,python-3.x,pandas,multi-index,Python 3.x,Pandas,Multi Index,我有一个具有多索引列的df,类似于此格式: 103 103 B 103 C 111 121 93 CPS CPS CPS Conc MConc Conc MConc CPS 1 1 1 1 100 4 400 1 2 3 4 2 200 5 500 2 3 3 3 3
103 103 B 103 C 111 121 93
CPS CPS CPS Conc MConc Conc MConc CPS
1 1 1 1 100 4 400 1
2 3 4 2 200 5 500 2
3 3 3 3 300 6 600 3
我想做的是将包含CP的所有列移动到数据帧的末尾。这样,
111 121 93 103 103 B 103 C
Conc MConc Conc MConc CPS CPS CPS CPS
1 100 4 400 1 1 1 1
2 200 5 500 2 2 3 4
3 300 6 600 3 3 3 3
我尝试过对索引进行排序,或者交换级别和排序,但是这会移动我不想移动的列,并且没有按照正确的顺序对它们进行排序。有超过37列,所以我不想手动传递列名
如何选择级别1包含CP的列并将这些列移动到数据帧的末尾?使用
argsort
尝试使用获取级别值
out = df.iloc[:,np.argsort(df.columns.get_level_values(1)=='CPS')]
Out[425]:
111 121 103 103B 103C 93
0 Conc MConc Conc MConc CPS CPS CPS CPS
1 1 100 4 400 1 1 1 1
2 2 200 5 500 2 3 4 2
3 3 300 6 600 3 3 3 3
好啊但是df的前7列需要保持为前7列,这也会重新排序这些列。这在片上会起作用吗?@Gingerhaze我不确定你需要什么,所以你也需要第一个lvl排序?