Python 将数据帧透视到层次结构列/更改列层次结构
我希望透视数据帧,如:Python 将数据帧透视到层次结构列/更改列层次结构,python,pandas,pivot,Python,Pandas,Pivot,我希望透视数据帧,如: 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
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
如何更改列的层次结构?我自己解决了这个问题:
df = df.swaplevel(0,1,axis = 1).sort(axis = 1)
将执行您需要的是重新排序\u级别,然后对列进行排序,如下所示:
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
作为旁注,swaplevel适合在2之间交换,而reorder_级别可以同时执行多个,如果这有帮助的话:)你在读我的想法:我只是想知道swaplevel和reorder_级别之间的区别是什么:)万一有人遇到:“'DataFrame'对象没有属性'sort'”,看看这个问题: