枢轴熊猫据帧到分层列/更改列层次
问题描述:
我想转动像一个数据帧:枢轴熊猫据帧到分层列/更改列层次
dim1 Value_V Value_y instance
0 A_1 50.000000 0 instance200
1 A_2 6500.000000 1 instance200
2 A_3 50.000000 0 instance200
3 A_4 4305.922313 1 instance200
向具备分层列这样一个数据帧:
A_1 A_2 A_3 .....
Value_V Value_y Value_V Value_y Value_V Value_y
instance200 50 0 6500 1 50 0
我试过df = df.pivot(index = "instance", columns = "dim1")
,但它只会给我一个这样的框架:
Value_V Value_y
A_1 A_2 A_3 .... A_1 A_2 A_3 ....
instance200 50 6500 50 0 1 0
我怎样才能改变的H层次的列?
答
我想通了由自己:
df = df.swaplevel(0,1,axis = 1).sort(axis = 1)
会做
答
你需要的是reorder_levels,然后对列进行排序,就像这样:
import pandas as pd
df = pd.read_clipboard()
df
Out[8]:
dim1 Value_V Value_y instance
0 A_1 50.000000 0 instance200
1 A_2 6500.000000 1 instance200
2 A_3 50.000000 0 instance200
3 A_4 4305.922313 1 instance200
In [9]:
df.pivot('instance', 'dim1').reorder_levels([1, 0], axis=1).sort(axis=1)
Out[9]:
dim1 A_1 A_2 A_3 A_4
Value_V Value_y Value_V Value_y Value_V Value_y Value_V Value_y
instance
instance200 50 0 6500 1 50 0 4305.922313 1
+0
如果有人遇到:“'DataFrame'对象没有'sort'属性”看看这个问题:https://*.com/questions/44123874/dataframe-object-has-no-attribute-sort – kristian 2017-11-08 12:52:45
哈哈,好一个,我被你自己打了10秒钟 – Anzel 2015-03-02 21:27:23
是的,但是谢谢你的努力:) – 2015-03-02 21:34:45
作为一个附注,** swaplevel **对swa有好处pping在2之间,而** reorder_levels **可以一次执行多个,如果有帮助:) – Anzel 2015-03-02 21:37:46