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
相关产品推荐
相关产品推荐

