Pandas pivot_table在适当的层次结构中重新列出列

时间:2017-05-19 12:50:25

标签: pandas

用数据透视表做一些logn魔术(更改列的级别,删除一些级别,合并几个pivot_tables)后,我最终在最终df中显示了列级别:

copySequentialArr

我很遗憾为什么它以这种方式表示,因为我期望考虑多级结构的适当的层次排序,例如。

P1  P2  P1  P2 - level 0
F1  F1  F2  F2 - level 1

如何以适当的分层方式重新设置列?

1 个答案:

答案 0 :(得分:1)

您似乎需要在第一级使用sort_index对其进行排序:

df = df.sort_index(axis=1, level=0)

样品:

np.random.seed(123)
cols = pd.MultiIndex.from_arrays([['P1','P2','P1', 'P2'],['F1','F1','F2','F2']])
df = pd.DataFrame(np.random.randint(10, size=(4,4)), columns=cols)
print (df)
  P1 P2 P1 P2
  F1 F1 F2 F2
0  2  2  6  1
1  3  9  6  1
2  0  1  9  0
3  0  9  3  4

df = df.sort_index(axis=1, level=0)
print (df)
  P1    P2   
  F1 F2 F1 F2
0  2  6  2  1
1  3  6  9  1
2  0  9  1  0
3  0  3  9  4