如何基于值在另一DataFrame中的存在性更新DataFrame指定列的值
实现方案
核心可以用pandas内置的isin()方法完成需求,代码简洁高效:
# 方式1:直接转布尔值为int,满足0/1赋值需求 df['col3'] = df['col1'].isin(df_2['col2']).astype(int)
如果需要设置其他非初始的自定义值,可以用np.where实现:
# 方式2:自定义匹配成功时的赋值,比如匹配成功设为99,失败保持0 df['col3'] = np.where(df['col1'].isin(df_2['col2']), 99, 0)
Series.isin()会逐行判断df['col1']的取值是否存在于df_2['col2']的取值集合中,返回布尔类型的序列,转换为整数后True对应1、False对应0,运行后得到的结果和你给出的示例完全一致。
- 如果
df_2['col2']数据量很大,可以先转成集合再传入,提升判断效率:col2_set = set(df_2['col2']) df['col3'] = df['col1'].isin(col2_set).astype(int)
内容的提问来源于stack exchange,提问作者SIUV
相关产品推荐
相关产品推荐

