首页 > 解决方案 > 为什么 pandas.date_range() 生成月份这么慢?

问题描述

简单观察:

>>> timeit.timeit('''pd.date_range("1900-01-01", "2017-07-02", freq='H')''', 'import pandas as pd', number=1000)
3.4257616080285516
>>> timeit.timeit('''pd.date_range("1900-01-01", "2017-07-02", freq='MS')''', 'import pandas as pd', number=1000)
62.60253554501105
>>> timeit.timeit('''pd.date_range("1900-01-01", "2017-07-02", freq='D')''', 'import pandas as pd', number=1000)
0.24156528399907984
>>> timeit.timeit('''pd.date_range("1900-01-01", "2017-07-02", freq='M')''', 'import pandas as pd', number=1000)
67.81731529999524

为什么生成月份 (M) 或月份开始 (MS) 如此缓慢?指定范围内大约有 1400 个月,在我的机器上生成它们大约需要 60 毫秒。另一方面,在相同范围内生成天数(约 43k)所需的时间要少 250 倍。

我需要一个月的开始,这对我来说太慢了。我的代码可以优化吗?

基准测试在带有 Pandas 0.23.1 的 macOS x86-64 上运行,并在 Linux x86-64 上获得了类似的结果。

标签: pandas

解决方案


推荐阅读