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

如何对含列表类型列的Polars DataFrame进行筛选?

Polars列表类型列的筛选方法

正确解决方案

针对列表类型的列,你需要使用Polars专门的列表比较逻辑,有两种常用方式:

方法1:使用eq()配合pl.lit()包装目标列表

import polars as pl

df = pl.DataFrame({
    'a': [['1', '3'], ['3'], ['1'], ['2']],
    'b':[['8'],['6'],['6', '7'],['7']]
})

# 筛选a列等于['1']的行
result = df.filter(pl.col('a').eq(pl.lit(['1'])))
print(result)

方法2:使用list.equals()专用方法

这是Polars为列表列提供的更直观的相等判断API:

result = df.filter(pl.col('a').list.equals(['1']))
print(result)

两种方法都会得到正确结果:

shape: (1, 2)
┌───────┬───────────┐
│ a     ┆ b         │
│ ---   ┆ ---       │
│ list  ┆ list      │
╞═══════╪═══════════╡
│ ["1"] ┆ ["6", "7"]│
└───────┴───────────┘

原代码报错原因

你之前用pl.col('a') == ['1']报错,是因为Polars会把右侧的Python列表当成单个元素的广播序列,尝试将列表类型的a列强制转换为单个Utf8字符串类型,这显然不符合类型规则,因此抛出ComputeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:16:12