当替代方案更快时,为什么我要使用 reset_index(drop=True)
?我确定我缺少某些东西。 (或者我的时机不太好......)
import pandas as pd
l = pd.Series(range(int(1e7)))
%timeit l.reset_index(drop=True)
# 35.9 ms +- 1.29 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
%timeit l.index = range(int(1e7))
# 13 us +- 455 ns per loop (mean +- std. dev. of 7 runs, 100000 loops each)
最佳答案
重置索引的代价高昂的操作不是创建新索引(正如您所展示的那样,速度非常快),而是返回系列的副本。如果你比较:
%timeit l.reset_index(drop=True)
22.6 ms ± 172 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit l.index = range(int(1e7))
14.7 µs ± 348 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit l.reset_index(inplace=True, drop=True)
13.7 µs ± 121 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
您可以看到就地操作(不返回副本)或多或少与您的方法一样快。然而它是generally discouraged执行就地操作。
关于python - 为什么在设置索引更快时使用 reset_index(drop=True)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50249979/