如何检查Polars Series中每个元素是否为指定集合?
在Polars中检查Series元素是否为特定集合的方法
你需要实现类似Pandas中直接比较集合的功能,先回顾下Pandas的实现:
import pandas as pd series = pd.Series([{'a'}, {'a','b'}, {'c'}]) series == {'a'}
在Polars中,由于集合类型无法直接通过==进行向量化比较,你可以通过元素级映射来实现相同逻辑,以下是两种常用方式:
方式一:直接处理Polars Series
使用map_elements方法遍历每个元素,与目标集合做比较:
import polars as pl # 创建Polars Series series = pl.Series([{'a'}, {'a','b'}, {'c'}]) # 定义目标集合 target_set = {'a'} # 执行比较,返回布尔值Series result = series.map_elements(lambda x: x == target_set) print(result)
运行后会输出:
shape: (3,) Series: '' [bool] [ true false false ]
方式二:DataFrame上下文处理
如果你的数据在DataFrame中,可以结合列表达式使用map_elements:
import polars as pl df = pl.DataFrame({'sets': [{'a'}, {'a','b'}, {'c'}]}) target_set = {'a'} # 添加新列存储比较结果 df_with_result = df.with_columns( pl.col('sets').map_elements(lambda x: x == target_set).alias('is_target_set') ) print(df_with_result)
输出结果:
shape: (3, 2) ┌───────────┬────────────────┐ │ sets ┆ is_target_set │ │ --- ┆ --- │ │ set[str] ┆ bool │ ╞═══════════╪════════════════╡ │ {"a"} ┆ true │ │ {"a", "b"}┆ false │ │ {"c"} ┆ false │ └───────────┴────────────────┘
内容的提问来源于stack exchange,提问作者jss367
相关产品推荐
相关产品推荐

