Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧透视到层次结构列/更改列层次结构_Python_Pandas_Pivot - Fatal编程技术网

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'”,看看这个问题: