如何基于值列表筛选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
相关产品推荐
相关产品推荐

