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

Polars DataFrame中如何使用isin?解决属性报错问题

Polars中实现列值是否在列表中的判断方法

你遇到的错误是因为Polars DataFrame不支持像Pandas那样通过属性(df.A)直接访问列,这是两个库API的核心差异之一。以下是几种在Polars中实现需求的方法:

方法1:使用列选择器pl.col结合isin

这是Polars推荐的写法,更适合后续的链式操作:

import polars as pl
import numpy as np

df = pl.DataFrame({'A': ['red', 'blue', 'green', np.nan, 'orange']})
my_list = ['red','orange']

# 生成包含判断结果的Series
bool_series = df.select(pl.col('A').isin(my_list))
print(bool_series)

# 或者直接给原DataFrame添加新列存储结果
df = df.with_columns(is_target_color=pl.col('A').isin(my_list))
print(df)

运行后会得到如下输出(添加新列的情况):

shape: (5, 2)
┌────────┬─────────────────┐
│ A      ┆ is_target_color │
│ ---    ┆ ---             │
│ str    ┆ bool            │
╞════════╪═════════════════╡
│ red    ┆ true            │
│ blue   ┆ false           │
│ green  ┆ false           │
│ null   ┆ false           │
│ orange ┆ true            │
└────────┴─────────────────┘

方法2:使用索引式列访问df['A']

如果你更习惯类似Pandas的索引写法,也可以直接通过索引获取列后调用isin:

bool_series = df['A'].isin(my_list)
print(bool_series)

输出结果为:

shape: (5,)
Series: 'A' [bool]
[
        true
        false
        false
        false
        true
]

注意点

Polars中NaN(即null)值调用isin时会返回false,和Pandas的行为一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:26:01