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

Polars中如何筛选列表列含指定元素的行?(任意/全部)

解决方案

Polars提供了原生的列表操作方法,能高效实现这两种筛选需求,完全不需要手动遍历或展开列表,性能拉满:

1. 筛选包含全部指定元素的行

用list.contains_all()方法,直接判断列表列是否包含目标列表的所有元素:

df_all = df.filter(pl.col("sets").list.contains_all(items))
print(df_all)

输出结果:

shape: (2, 1)
┌───────────┐
│ sets      │
│ ---       │
│ list[i64] │
╞═══════════╡
│ [1, 2, 3] │
│ [2, 0, 1] │
└───────────┘

2. 筛选包含任意指定元素的行

用list.contains_any()方法,判断列表列是否包含目标列表中的至少一个元素:

df_any = df.filter(pl.col("sets").list.contains_any(items))
print(df_any)

输出结果:

shape: (6, 1)
┌───────────┐
│ sets      │
│ ---       │
│ list[i64] │
╞═══════════╡
│ [1, 2, 3] │
│ [2, 12]   │
│ [6, 6, 1] │
│ [2, 0, 1] │
│ [1, 1, 4] │
│ [2, 7, 2] │
└───────────┘

方法优势

这两个方法都是Polars的向量化操作,底层由Rust实现,比Python层面的循环或列表推导效率高得多,处理大体积DataFrame时优势尤为明显。

如果你的Polars版本较旧(比如0.18.x及以前),只需把items转成Polars Series传入即可:pl.Series(items),新版本直接传列表就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:12:20