You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Polars如何筛选指定日期间隔范围内的行

操作步骤

你当前构建的DataFrame中dates列是字符串类型,筛选前建议先将其转换为Polars的日期格式,避免后续日期操作出现兼容性问题,之后可以用两种常用方式完成筛选:

方法1:使用is_between方法(推荐,写法最简洁)

is_between默认同时包含左右边界,刚好匹配你要保留2016-08-10和2016-08-31两行的需求,完整代码如下:

import polars as pl
from datetime import datetime

df = pl.DataFrame({
    "dates": ["2016-07-02", "2016-08-10",  "2016-08-31", "2016-09-10"],
    "values": [1, 2, 3, 4]
})

# 转换日期列类型
df = df.with_columns(
    pl.col("dates").str.to_date()
)

# 筛选日期间隔
filtered_df = df.filter(
    pl.col("dates").is_between("2016-08-10", "2016-08-31")
)

print(filtered_df)

方法2:使用布尔逻辑条件判断

如果你需要更灵活的边界调整,也可以用基础的大小判断组合筛选:

import polars as pl
from datetime import datetime

df = pl.DataFrame({
    "dates": ["2016-07-02", "2016-08-10",  "2016-08-31", "2016-09-10"],
    "values": [1, 2, 3, 4]
})

# 转换日期列类型
df = df.with_columns(
    pl.col("dates").str.to_date()
)

# 布尔条件筛选
filtered_df = df.filter(
    (pl.col("dates") >= "2016-08-10") & (pl.col("dates") <= "2016-08-31")
)

print(filtered_df)

补充说明

如果你的日期格式是YYYY-MM-DD这种字符串字典序和日期顺序完全一致的格式,也可以不转日期类型直接筛选,但是为了后续日期计算、分组等操作的正确性,还是建议统一转换为日期格式后再处理。
is_between方法支持通过closed参数调整边界规则:

  • closed="both":默认值,同时包含左右边界
  • closed="left":仅包含左边界
  • closed="right":仅包含右边界
  • closed="none":不包含任何边界

内容的提问来源于stack exchange,提问作者pythonic833

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:36:02