Polars DataFrame多列条件过滤报错:如何正确组合谓词?
在Rust中使用Polars多列条件过滤DataFrame的正确方法
你遇到的E0369错误本质是Polars的Expr类型未实现&运算符重载,无法直接用该符号组合多列过滤条件。以下是正确的实现方式:
修正后的代码
use polars::{prelude::*, lazy::dsl::col}; // 组合多列过滤条件 let predicate = col("job").eq(lit("Social worker")) .and(col("sex").eq(lit("M"))); let filtered_df = df .clone() .lazy() .filter(predicate) .collect() .unwrap();
扩展多条件
如果后续需要添加更多过滤规则,直接链式调用.and()即可:
let predicate = col("job").eq(lit("Social worker")) .and(col("sex").eq(lit("M"))) .and(col("age").gt(lit(30))) // 新增年龄大于30的条件 .and(col("city").eq(lit("New York"))); // 新增城市条件
补充说明
Polars为Expr类型提供了.and()、.or()等专门的逻辑运算方法,这是官方推荐的组合条件方式。你之前尝试.and()未成功,大概率是写法问题(比如未正确链式调用、括号嵌套错误),确保每个子条件都是合法的Expr后,通过.and()连接即可生成正确的复合谓词。
内容的提问来源于stack exchange,提问作者jeevt
相关产品推荐
相关产品推荐

