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

如何在Polars中实现Pandas isin函数的等效功能?

在Polars中实现等效Pandas的isin逻辑(无join、无标记列)

Pandas实现示例

先明确我们要复刻的逻辑,假设数据集如下:

import pandas as pd

DF = pd.DataFrame({'id': [1,2,3,4,5]})
DF2 = pd.DataFrame({'id': [2,4,6], 'flag': [1,0,1]})

# 核心逻辑:给DF新增列,标记id是否存在于DF2中flag=1的id集合
DF['is_flagged'] = DF['id'].isin(DF2[DF2['flag']==1]['id'])

最终DF输出:

idis_flagged
1False
2True
3False
4False
5False

Polars等效实现

你之前用is_in()失败,大概率是参数格式不对。Polars的is_in()支持直接传入Polars Series或表达式,完全不需要join或额外标记列,两种写法都能实现需求:

写法1:先提取符合条件的id列表

import polars as pl

pl_DF = pl.DataFrame({'id': [1,2,3,4,5]})
pl_DF2 = pl.DataFrame({'id': [2,4,6], 'flag': [1,0,1]})

# 从DF2筛选flag=1的id并转成列表
flagged_ids = pl_DF2.filter(pl.col('flag') == 1)['id'].to_list()

# 新增is_flagged列
pl_DF = pl_DF.with_columns(
    is_flagged=pl.col('id').is_in(flagged_ids)
)

写法2:表达式嵌套(更简洁)

无需提前转列表,直接在is_in()中嵌套筛选逻辑:

pl_DF = pl_DF.with_columns(
    is_flagged=pl.col('id').is_in(pl_DF2.filter(pl.col('flag') == 1).select('id'))
)

两种写法的输出结果和Pandas完全一致,且满足你要求的无join、无标记列的条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:10:46