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

如何用Pandas判断DataFrame中ID1列值是否存在于ID2列?

问题解决:判断每行ID1是否存在于ID2列全集

错误原因分析

你之前的代码逻辑有误:df_test.drop("ID1", 1).isin(df_test["ID2"]).any(1) 实际上是检查每行的ID2值是否在ID2列中(等于自己查自己),所以结果全为True,完全不符合你要判断ID1是否在ID2列的需求。

正确实现代码

import pandas as pd

# 初始化数据
data = [[1, 10], [2, 15], [10, 14]]
df_test = pd.DataFrame(data, columns=['ID1', 'ID2'])

# 提取ID2列的所有值为集合(提升查找效率)
id2_values = set(df_test['ID2'])

# 生成Exists列:判断每行ID1是否在ID2的全集里
df_test['Exists'] = df_test['ID1'].isin(id2_values)

# 输出结果
print(df_test.to_csv(index=False))

执行结果

执行后会输出你期望的结果:

ID1,ID2,Exists
1,10,False
2,15,False
10,14,True

补充说明

  • 用set()转换ID2列是为了提升大规模数据下的查找效率,直接用df_test['ID1'].isin(df_test['ID2'])也能得到正确结果,但集合的查找速度更快。
  • 如果需要保留布尔值的大小写(比如输出True/False而不是小写),可以不用额外处理,Pandas默认输出的布尔值就是首字母大写的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:12:05