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

Pandas如何判断DataFrame列值是否存在于另一列且不受顺序影响

问题原因

直接调用df1.isin(df2)时,pandas会默认按行索引对齐做逐元素匹配,而非判断值是否存在于目标列的全量取值集合中。当两个DataFrame同列的值排列顺序不一致、索引位置不匹配时,就会出现值实际存在却返回False的问题。

实现方式

不需要使用for循环,只需要将isin()的入参调整为df2对应列的值序列,就可以不受值顺序、行数差异影响完成判断:

import pandas as pd

df1 = pd.DataFrame({'one': [2,4,6,8]})
df2 = pd.DataFrame({'one': [4,2,6,8,10]})

# 单指定列判断
print(df1['one'].isin(df2['one']))

运行后所有行均返回True,输出如下:

0    True
1    True
2    True
3    True
Name: one, dtype: bool

如果需要保留DataFrame结构、支持多列同时判断,可直接传入对应列的Series对象:

# 全列匹配判断,自动按列名对应取值集合
print(df1.isin(df2['one']))

输出结果:

one
0  True
1  True
2  True
3  True

该方法完全适配df2取值数量多于df1的场景,判断逻辑仅校验值是否存在于对应列的取值集合中,和值的排列顺序、行索引位置无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 00:39:36