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

Pandas如何检查某列字符串是否存在于另一列对应行的逗号分隔文本中

错误原因

你原来的代码存在两个核心问题:

  1. 逻辑顺序颠倒:x['Name B'] in x['Name A']是判断整个Name B的长字符串是否包含在Name A的短字符串中,显然不可能成立,所以返回全False
  2. 没有拆分Name B的逗号分隔字符串:需要先把Name B按逗号拆分为独立的姓名列表,再做匹配

场景1:严格精确匹配(姓名完全一致才返回True)

适合要求姓名完全相同才判定为存在的场景,实现代码如下:

# 拆分Name B为列表,去除每个姓名前后的空格后,判断Name A是否在列表中
df['Name Check'] = df.apply(lambda x: x['Name A'] in [i.strip() for i in x['Name B'].split(',')], axis=1)

场景2:模糊子串匹配(满足你提供的期望输出结果)

从你给出的期望输出看,存在近似匹配需求:比如Name A为Nadi匹配Name B中的Nadia、Name A为George匹配Name B中的Georg,这种场景可以用如下实现:

def match_name(row):
    name_a = row['Name A']
    # 拆分Name B并去除空格
    name_b_list = [item.strip() for item in row['Name B'].split(',')]
    for name_b in name_b_list:
        # 双向子串判断,只要两个字符串互相为子串即判定匹配
        if name_a in name_b or name_b in name_a:
            return True
    return False

df['Name Check'] = df.apply(match_name, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:57:03