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

如何使用Polars按值列表过滤DataFrame?

Polars按值列表过滤DataFrame的正确方法

你遇到的报错核心原因是误用了Python原生的in运算符——Polars的表达式(Expr)对象不支持用in来判断是否在列表中,必须使用Polars内置的is_in()方法。

正确写法示例

  • 单个条件过滤:
    .filter(pl.col("cid1").is_in(my_list))
    
  • 多个条件同时满足(用&连接,注意每个表达式加括号):
    .filter((pl.col("cid1").is_in(my_list)) & (pl.col("cid2").is_in(my_list)))
    

完整可运行代码

import polars as pl

my_list = [1, 2, 4, 6, 48]

# 懒加载模式
df = (
    pl.read_csv("bm.dat", separator=';', new_columns=["cid1", "cid2", "cid3"])
    .lazy()
    .filter((pl.col("cid1").is_in(my_list)) & (pl.col("cid2").is_in(my_list)))
    .collect()
)

# 非懒加载模式(去掉lazy和collect)
df = (
    pl.read_csv("bm.dat", separator=';', new_columns=["cid1", "cid2", "cid3"])
    .filter((pl.col("cid1").is_in(my_list)) & (pl.col("cid2").is_in(my_list)))
)

is_in()是Polars专门用来判断列值是否存在于指定可迭代对象(列表、集合等)中的表达式方法,懒加载和非懒加载模式都能正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:30:54