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

Polars DataFrame按列/按行逻辑运算:求更简洁实现方案

在Polars中简化布尔DataFrame的any/all运算实现

针对你提到的Polars里行掩码、全局布尔值写法繁琐的问题,这里提供三种场景的简洁替代方案,完全贴合Polars的原生API设计:

1. 获取包含"?"的列掩码

你的原有写法已经足够简洁,也可以写成更紧凑的等价形式:

(pl_df == "?").select(pl.all().any())
# 或者
pl_df.select(pl.all().eq("?").any())

2. 获取包含"?"的行掩码

不用再拼接列表、嵌套eval,直接用Polars专门用于横向行维度运算的pl.any_horizontal()函数:

(pl_df == "?").select(pl.any_horizontal(pl.all()))
# 等价简化写法
pl_df.select(pl.any_horizontal(pl.all().eq("?")))

该函数会对每一行的所有列布尔值做OR运算,直接输出每行的掩码结果。

3. 获取全局是否存在"?"的单个布尔值

可以基于行掩码结果直接聚合,或者一步到位链式调用:

# 方法1:基于行掩码结果聚合
(pl_df == "?").select(pl.any_horizontal(pl.all())).to_series().any()

# 方法2:直接链式调用
(pl_df == "?").any_horizontal(pl.all()).any()

# 方法3:先列维度聚合再全局判断
pl_df.select(pl.all().eq("?").any()).to_series().any()

这些方案完全利用Polars的原生横向运算API,避免了不必要的列表转换和嵌套操作,代码更简洁且性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:57:36