我知道我可以像这样重置索引
df.reset_index(inplace=True)
但这将从以下位置开始索引0
。我想从1
。如何在不创建任何额外列并保留 index/reset_index 功能和选项的情况下做到这一点?我愿意not想要创建一个新的数据框,所以inplace=True
仍应适用。
只需直接分配一个新的索引数组即可:
df.index = np.arange(1, len(df) + 1)
Example:
In [151]:
df = pd.DataFrame({'a':np.random.randn(5)})
df
Out[151]:
a
0 0.443638
1 0.037882
2 -0.210275
3 -0.344092
4 0.997045
In [152]:
df.index = np.arange(1,len(df)+1)
df
Out[152]:
a
1 0.443638
2 0.037882
3 -0.210275
4 -0.344092
5 0.997045
Or just:
df.index = df.index + 1
如果索引已经从 0 开始
TIMINGS
由于某种原因我无法计时reset_index
但以下是 100,000 行 df 的时序:
In [160]:
%timeit df.index = df.index + 1
The slowest run took 6.45 times longer than the fastest. This could mean that an intermediate result is being cached
10000 loops, best of 3: 107 µs per loop
In [161]:
%timeit df.index = np.arange(1, len(df) + 1)
10000 loops, best of 3: 154 µs per loop
所以没有时间reset_index
我不能明确地说,但是如果索引已经存在,那么看起来只向每个索引值添加 1 会更快0
based
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)