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

Python实现DataFrame一对多合并:按df1字符串包含df2关键词规则匹配

解决方案

问题原因

你之前使用的str.extract()方法仅会返回每个字符串第一个匹配的捕获组结果,因此单个行匹配到多个关键词时只能保留一条记录,无法实现需要的一对多展开效果。

调整后完整代码

import pandas as pd
import re
import numpy as np

# 统一转小写
df1['words'] = df1['words'].str.lower()
df2['keywords'] = df2['keywords'].str.lower()

# 构建匹配规则
pat = '|'.join([re.escape(x) for x in df2.keywords])

# 提取所有匹配的关键词,返回列表,空列表替换为[np.nan]避免炸行丢失无匹配的记录
df1['keywords'] = df1['words'].str.findall(pat).apply(lambda x: x if x else [np.nan])

# 把关键词列表拆分为多行,每个关键词对应一条独立记录
df1_exploded = df1.explode('keywords', ignore_index=True)

# 左连接df2获取对应code字段
result = pd.merge(df1_exploded, df2, on='keywords', how='left')

运行上述代码得到的result和你预期的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:57:01