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

Rust中使用Polars按列值过滤DataFrame时的类型错误问题求助

Rust中使用Polars按列值过滤DataFrame时的类型错误问题求助

嗨,我来帮你解决这个问题!

你遇到的报错是因为Polars的列表达式系统要求比较的两边都得是表达式类型——df["City"]返回的是一个列表达式,而你直接传入的"California"是普通字符串,类型不匹配,所以编译器抛出了这个错误。

下面给你两种正确的实现方式:

方法一:用lit包装标量值

Polars提供了lit函数,专门用来把普通标量(比如字符串、数字)转换成能和列表达式进行比较的字面量表达式。修改后的代码如下:

use polars::prelude::*;

// 假设df已经是你读取好的DataFrame
let filtered_df = df.filter(&df["City"].eq(lit("California")))?;

方法二:用col函数引用列(更推荐)

使用col函数来引用列会让代码结构更清晰,尤其是在处理复杂过滤逻辑时,可读性会提升很多:

use polars::prelude::*;

let filtered_df = df.filter(col("City").eq(lit("California")))?;

额外实用技巧:不区分大小写的过滤

如果你的需求是忽略大小写匹配"California",可以结合Polars的字符串处理方法来实现:

let filtered_df = df.filter(
    col("City")
        .str()
        .to_lowercase()
        .eq(lit("california"))
)?;

这样就能正确筛选出"City"列值为"California"的所有行了,有其他问题欢迎随时提问!

备注:内容来源于stack exchange,提问作者akhil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 08:49:35