【问题标题】:Arrange dataframe header after pivot在数据透视后排列数据帧头
【发布时间】:2020-08-30 19:07:46
【问题描述】:

我已经完成了一个数据透视,我的新数据框如下所示:

因此,userId 列现在是一个索引,我有一个 2 级标题。我怎样才能转到看起来像这样的单级标题:

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

其中空条目是数据框的索引,而 userId 是常规列?

【问题讨论】:

  • 请分享输入和输出数据帧的数据,而不是图片

标签: python pandas dataframe indexing


【解决方案1】:

您可以使用dataframe的stack方法将level 1的列转换为索引,然后使用reset_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 是一个简单的列,并且索引列是未命名的。
  • 那么你可以先unstackdataframe,然后将索引的最后一级转换为列,查看修改后的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
相关资源
最近更新 更多