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

Pandas DataFrame姓名列与语料列的部分匹配功能实现方法

你可以直接用Pandas自带的方法实现需求,不需要额外引入第三方库,也可以用正则实现,两种方案如下:

方案1:无正则实现(推荐,逻辑简单不易出错)

逐行判断Name拆分后的所有单词是否有任意一个出现在Corpus中,代码示例:

import pandas as pd

# 构造示例DataFrame,实际使用时替换成你自己的数据源即可
data = {
    "Name": ["James Bond Junior Bristleback", "Batman Bin Superman", "Thor S/O Odin"],
    "Corpus": ["Agent James Bond went missing", "Superman saves the day again", "Loki was last seen in March 2020"]
}
df = pd.DataFrame(data)

# 核心匹配逻辑
df['Value'] = df.apply(
    lambda row: any(word in row['Corpus'] for word in row['Name'].split()), 
    axis=1
)

如果你需要匹配任意长度的连续子串(不限制为完整单词),调整核心逻辑为逐位匹配即可。

方案2:正则实现(灵活度更高,支持自定义规则)

如果后续需要扩展匹配规则,比如忽略大小写、兼容特殊字符等,可以用正则实现:

import pandas as pd
import re

df['Value'] = df.apply(
    lambda row: bool(re.search(
        re.escape(row['Name']).replace(' ', '|'), 
        row['Corpus'],
        flags=re.IGNORECASE # 不需要忽略大小写可以删掉这个参数
    )), 
    axis=1
)

这里用re.escape处理Name字段避免特殊正则字符导致匹配报错,把空格替换为|实现任意姓名片段匹配的逻辑。

两种方案运行后都可以得到你需要的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:06:04