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
相关产品推荐
相关产品推荐

