python - 为什么在设置索引更快时使用 reset_index(drop=True)?

标签 python pandas indexing series

当替代方案更快时,为什么我要使用 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/

相关文章:

c# - c#中的函数装饰器

python - 如何使用 Python 将此 XML 字符串转换为二进制形式?

python - 如何使用列表作为 Pandas 数据框中的值?

python - 我找不到将 Pandas 时间戳转换为 matplotlib 图日期的方法

MySQL索引导致查询变慢

hyperlink - SEO - 看起来像这样的动态创建的链接会被编入索引吗?

python - 如何使用 MultiIndex.from_product 重新索引?

python - 使用 python 的 lxml 剥离内联标签

python - 在 Pandas 数据框中创建新列作为其他列的总排列

python - 3D 数组中每个元素的 Numpy 索引值