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

使用pd.isin()判断DataFrame某列值是否在另一列列表内失效原因咨询

问题原因

pd.Series.isin()的设计逻辑是:对左侧序列的每一个元素,判断其是否存在于右侧传入的整个可迭代对象的所有元素集合中,而非逐行对应匹配。
你调用df.x.isin(df.y)时,实际执行的逻辑是:逐个判断x列的每个数值,是否等于y列中的任意一个元素(y列的元素是列表,也就是判断数值是否等于某个列表),显然永远返回False,因此筛选不到任何结果。

正确实现方案

方法1:逐行apply(写法直观,适合小数据集)

通过axis=1指定按行遍历,逐行判断当前行x取值是否在同行y列表中:

result = df[df.apply(lambda row: row['x'] in row['y'], axis=1)]

方法2:列表推导式(性能更优,适合大数据集)

直接对两列元素配对判断,避免apply的额外开销:

result = df[[x in y for x, y in zip(df['x'], df['y'])]]

两种方法得到的结果一致,符合筛选预期:

xy
0[0, 2]
2[2, 3]
3[3, 4]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:45:05