Python 在透视后排列数据帧标题

Python 在透视后排列数据帧标题,python,pandas,dataframe,indexing,Python,Pandas,Dataframe,Indexing,我已经完成了pivot,我的新数据框架如下所示: 因此,userId列现在是一个索引,我有一个两级标题。如何转到一个类似以下内容的单级标题: ' ' , 'userId' , 1, 2, 3, 4, 5 其中,空条目是数据帧的索引,userId是一个常规列 您可以使用数据帧的stack方法将级别1的列转换为索引,然后使用reset\u index将索引转换为列: In [2]: import pandas as pd

我已经完成了pivot,我的新数据框架如下所示:

因此,
userId
列现在是一个索引,我有一个两级标题。如何转到一个类似以下内容的单级标题:

' ' , 'userId' , 1, 2, 3, 4, 5

其中,空条目是数据帧的索引,userId是一个常规列

您可以使用数据帧的
stack
方法将级别1的列转换为索引,然后使用
reset\u index
将索引转换为列:

In [2]: import pandas as pd                                                                                                                           

In [3]: df = pd.DataFrame(index=range(3), columns=pd.MultiIndex.from_product([[1, 2], ['a', 'b']])).fillna(1)                                         

In [4]: df = df.stack(level=-1)                                                                                                                       

In [5]: df                                                                                                                                            
Out[5]: 
     1  2
0 a  1  1
  b  1  1
1 a  1  1
  b  1  1
2 a  1  1
  b  1  1

In [6]: df = df.reset_index(drop=False).set_index('level_0')                                                                                          

In [7]: df                                                                                                                                            
Out[7]: 
        level_1  1  2
level_0              
0             a  1  1
0             b  1  1
1             a  1  1
1             b  1  1
2             a  1  1
2             b  1  1

嗨,我做了一个编辑,很抱歉不清楚。像往常一样,我希望userId是一个简单的列,而index列是未命名的。然后您可以
首先取消堆栈
数据帧,然后将索引的最后一级转换为列,请参阅修改后的答案。请共享输入和输出数据帧的数据,而不是图片