为何Polars datetime筛选速度慢?求更快的Polars时间筛选方法
Polars DateTime子集化性能疑问及优化方法
我正在寻找使用datetime对Polars DataFrame进行子集化的更快方法,尝试了两种实现方式后,发现Pandas的同类操作速度明显更快,因此认为Polars应该存在更优的实现方案。
测试代码及结果
Polars两种实现方式
import datetime import polars as pl start_date = datetime.datetime(2009, 8, 3, 0, 0) end_date = datetime.datetime(2009, 11, 3, 0, 0) # 方法一:直接引用DataFrame列 %%timeit df_window = df_stock.filter( (df_stock["date_time"] >= start_date) & (df_stock["date_time"] <= end_date) ) # 2.61 ms ± 243 µs per loop (mean ± std. dev. of 7 runs, 100 loops each) # 方法二:使用pl.col()引用列 %%timeit df_window = df_stock.filter( (pl.col("date_time") >= start_date) & (pl.col("date_time") <= end_date) ) # 12.5 ms ± 801 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Pandas对比实现(性能更优)
import pandas as pd df_test = df_stock.to_pandas() df_test.set_index('date_time', inplace=True) %%timeit df_test['2009-8-3':'2009-8-3'] # 1.02 ms ± 108 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
核心疑问
- 为何该场景下Pandas的datetime子集化操作比Polars更快?
- Polars是否存在更快的datetime子集化实现方式?
环境信息
- Spyder版本:5.4.0(conda)
- Python版本:3.8.13 64位
- 操作系统:Linux 5.15.79.1-microsoft-standard-WSL2
内容的提问来源于stack exchange,提问作者Artur
相关产品推荐
相关产品推荐

