请参见下面的示例。
给出一个索引重复的数据框,我该如何获得一个新的数据框,它的层次索引的第一级是原始索引,第二级是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
答案 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
>>>
更改索引名称并创建一个列名称为''
(空字符串)的列。