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

Pandas如何新增列标记df1的A列值是否存在于df2的同名列中

实现方案

直接用pandas内置的isin()成员判断方法即可,逻辑简单、执行效率高,是这类值匹配场景的最优选择。

首先是测试数据构造代码(实际使用时跳过这步,直接用你已有的df1、df2即可):

import pandas as pd
import numpy as np

df1 = pd.DataFrame({'A': ['a1', 'a2', 'a3']})
df2 = pd.DataFrame({'A': ['a1', 'a3', 'a4', 'a7']})

核心实现代码:

# 先把df2的A列转为集合,大数据量下判断速度会快很多
df2_a_values = set(df2['A'])

# 写法1:用map把布尔值转成Y/N,不需要额外导入numpy
df1['Found in df2?'] = df1['A'].isin(df2_a_values).map({True: 'Y', False: 'N'})

# 写法2:如果你习惯用np.where,也可以用下面这句,效果完全一致
# df1['Found in df2?'] = np.where(df1['A'].isin(df2_a_values), 'Y', 'N')

执行后打印df1,就能得到预期结果:

A Found in df2?
0  a1             Y
1  a2             N
2  a3             Y

注意事项

  • 不要直接传入df2的原列做判断:即不要写df1['A'].isin(df2['A']),小数据量感知不到差异,当数据量超过10万行时,提前转成set类型能让判断速度提升数倍。
  • 表合并(merge/join)方法也能实现需求,但需要额外处理合并产生的空值、重复值,代码冗余且执行效率低于isin方案,非必要不选择,参考写法如下:
# 仅作参考,不推荐日常使用
df1 = df1.merge(
    df2[['A']].drop_duplicates().assign(flag='Y'),
    on='A',
    how='left'
)
df1['Found in df2?'] = df1['flag'].fillna('N')
df1 = df1.drop(columns='flag')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:27:22