使用Python Pandas从非唯一索引创建唯一的MultiIndex

3

我有一个带有非唯一索引的pandas DataFrame:

index = [1,1,1,1,2,2,2,3]

df = pd.DataFrame(data = {'col1': [1,3,7,6,2,4,3,4]}, index=index)

df
Out[12]: 
   col1
1     1
1     3
1     7
1     6
2     2
2     4
2     3
3     4

我希望将这个转换为独特的MultiIndex并保留顺序,就像这样:

        col1
  Ind2      
1 0        1
  1        3
  2        7
  3        6
2 0        2
  1        4
  2        3
3 0        4

我想象中的Pandas应该有类似这样的函数,但我没有找到任何相关内容。
1个回答

6
你可以对索引进行groupby.cumcount操作,然后使用set_index将其附加为索引的新级别:
df = df.set_index(df.groupby(level=0).cumcount(), append=True)

转换后的输出结果:
     col1
1 0     1
  1     3
  2     7
  3     6
2 0     2
  1     4
  2     3
3 0     4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接