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

Pandas实现双DataFrame字符串子串匹配并返回匹配值至新列

Pandas 长文本匹配子串实现方案

核心思路是将df1中所有待匹配的子串拼接为正则或匹配模式,直接从df2的长文本列中提取命中的子串,同时自动处理未匹配场景返回空值。

完整实现代码

import pandas as pd
import re

# 示例数据构造
df1 = {'subst': ['LONDON BRIDGE', 'TRUE GRIT', 'FIVE TIMES FIVE', 'THREE TIME DEAD', 'TRUE IS NOT', 'OH NO', 'LEBRON JAMES']}
df2 = {'strng': ['LEBRON JAMES SCORED 20', 'THREE TIMES DEAD JOHNY WAS HELL OF THE COOK', 'TRUE IS NOT WHAT YOU THINK', 'FIVE TIMES FIVE IS NOT WHAT LEBRON SCORED']}
df1 = pd.DataFrame(df1)
df2 = pd.DataFrame(df2)

# 构造正则匹配模式,re.escape处理子串中的特殊正则字符避免匹配异常
match_pattern = '|'.join(map(re.escape, df1['subst']))
# 提取匹配结果到新列,expand=False返回Series直接赋值
df2['match_df1'] = df2['strng'].str.extract(f'({match_pattern})', expand=False)

注意事项

你提供的示例中df1的THREE TIME DEAD为单数形式,而df2对应长文本中为THREE TIMES DEAD复数形式,如需要该条匹配成功,修改df1中的子串为复数形式即可得到你给出的预期结果。
执行代码后输出df2即可得到符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:06:03