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

如何编写匹配所有内容(含空值)的Polars过滤表达式pl.Expr?

在Polars过滤场景中匹配所有内容(含空值)的表达式方案

在Polars的过滤场景中,若需要一个能匹配所有行(包括含空值的行)的pl.Expr,最直接简洁的方案是使用pl.lit(True)。

核心逻辑

pl.lit(True)会生成一个全为True的布尔表达式列,它不依赖任何输入数据的取值——无论原数据中是否存在空值(null),该表达式的结果始终为True,过滤时会完整保留所有行。

常见误区规避

  • 不要用pl.col("*"):这是选择所有列的表达式,并非布尔过滤条件,无法用于filter()方法。
  • 无需使用复杂聚合表达式(如pl.any_horizontal(pl.all())):这类写法冗余且性能不如pl.lit(True)直接高效。

场景示例(类型提示与辅助函数)

import polars as pl
from typing import Callable

# 符合类型提示要求、返回pl.Expr的辅助函数
def get_full_match_expr() -> pl.Expr:
    return pl.lit(True)

# 测试使用
sample_df = pl.DataFrame({
    "id": [1, 2, None],
    "value": ["foo", None, "bar"]
})

# 过滤后保留所有行(含空值行)
result_df = sample_df.filter(get_full_match_expr())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:59:49