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

如何判断DataFrame某列值是否存在于另一DataFrame列中

解决方案:检查DataFrame中姓名是否存在并返回标识

首先,先明确你的需求:遍历Df1['name']的每个元素,判断是否在Df2['IDs']中,存在返回1,不存在返回0,最后输出指定格式的结果。

方法一:用pandas向量化操作(推荐,效率更高)

pandas里尽量避免逐行遍历,用isin()方法可以快速完成判断,然后转成整数类型即可:

import pandas as pd

# 初始化你的DataFrame
Df1 = pd.DataFrame({'name': ['Marc', 'Jake', 'Sam', 'Brad']})
Df2 = pd.DataFrame({'IDs': ['Jake', 'John', 'Marc', 'Tony', 'Bob']})

# 生成判断结果列
Df1['exists'] = Df1['name'].isin(Df2['IDs']).astype(int)

# 按你想要的格式输出
for idx, row in Df1.iterrows():
    print(f"{row['name']} {row['exists']}")

运行这段代码就能得到你期望的输出:

Marc 1
Jake 1
Sam 0
Brad 0

方法二:逐行遍历(如果一定要手动遍历的话)

如果你确实需要逐行处理,也可以这样写:

import pandas as pd

Df1 = pd.DataFrame({'name': ['Marc', 'Jake', 'Sam', 'Brad']})
Df2 = pd.DataFrame({'IDs': ['Jake', 'John', 'Marc', 'Tony', 'Bob']})

# 把Df2的IDs转成集合,查询效率更高
id_set = set(Df2['IDs'])

# 遍历Df1的每一行
for name in Df1['name']:
    # 判断是否在集合中,存在返回1,否则0
    result = 1 if name in id_set else 0
    print(f"{name} {result}")

这个方法也能得到同样的结果,不过当数据量很大时,方法一的向量化操作速度会快很多,所以更推荐第一种。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:23:04