熊猫:将重复索引更改为分层索引

时间:2018-11-06 02:04:36

标签: python pandas

请参见下面的示例。

给出一个索引重复的数据框,我该如何获得一个新的数据框,它的层次索引的第一级是原始索引,第二级是0、1、2,...,n? >

示例:

>>> df
   0  1
a  2  4
a  4  6
b  7  8
b  2  4
c  3  7
>>> df2 = df.some_operation()
>>> df2
      0  1
a  0  2  4
   1  4  6
b  0  7  8
   1  2  4
c  0  3  7

2 个答案:

答案 0 :(得分:1)

您可以使用cumcount

df.assign(level2=df.groupby(level=0).cumcount()).set_index('level2',append=True)
Out[366]: 
          0  1
  level2      
a 0       2  4
  1       4  6
b 0       7  8
  1       2  4
c 0       3  7

答案 1 :(得分:0)

可以采用伪造的方式(完全不建议使用,请勿使用此方式):

>>> df.index=[v if i%2 else '' for i,v in enumerate(df.index)]
>>> df.insert(0,'',([0,1]*3)[:-1])
>>> df
      0  1
   0  2  4
a  1  4  6
   0  7  8
b  1  2  4
   0  3  7
>>> 

更改索引名称并创建一个列名称为''(空字符串)的列。