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

如何基于值列表筛选Polars DataFrame的行

如何基于值列表筛选Polars DataFrame的行

嘿,我来帮你搞定这个问题!你已经会用单个值筛选Polars DataFrame了,那要基于值列表来筛选其实超简单,我给你分享两种常用的实用方法:

  • 方法一:直接用is_in()做布尔索引
    这是最直接的方式,Polars的Series对象自带is_in()方法,专门用来检查元素是否属于某个列表,用法和你之前用单个值筛选的逻辑很像:
import polars as pl

df = pl.DataFrame({"a":[1, 2, 3], "b":[4, 3, 2]})
list_of_values = [1, 3]

# 用is_in()生成布尔索引,再筛选行
y = df[df["a"].is_in(list_of_values)]
print(y)

运行后你会得到想要的结果:

shape: (2, 2)
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═════╪═════╡
│ 1   ┆ 4   │
│ 3   ┆ 2   │
└─────┴─────┘
  • 方法二:用filter()链式调用(更优雅)
    如果你习惯用Polars的链式语法,也可以用filter()方法配合pl.col()来写,这种写法在处理多条件筛选的时候可读性会更强:
y = df.filter(pl.col("a").is_in(list_of_values))

这段代码和方法一的效果完全一样,只是写法更贴合Polars的原生风格。

简单说下原理:is_in()会返回一个和原Series长度相同的布尔Series,Polars会根据这个布尔Series来保留对应为True的行,和你之前用df["a"] == 3筛选单个值的逻辑是一脉相承的~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 15:58:09