请看下面的例子。
假设有一个数据框,其中索引值重复了,如何获取一个新的数据框,其层次化索引的第一级为原始索引,第二级为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
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
可以用假的方式(完全不推荐,不要使用这种方法):
>>> 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
>>>
更改索引名称并创建一个列,该列的列名为''
(空字符串)。
pd.MultiIndex
的替代方法是:df.set_index(pd.MultiIndex.from_arrays([df.index, df.groupby(level=0).cumcount()]))
。 - Bharath M Shetty