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

如何用正则在Pandas DataFrame中匹配完整关键词而非部分匹配

解决方法

要匹配完整单词,核心是给每个关键词加上正则单词边界\b,它会精准匹配单词的起始或结束位置,彻底避免booking识别出book、training识别出train这类部分匹配的情况。

修改后的代码

import numpy as np
import pandas as pd

keywords = ['book','train','job']
# 给每个关键词包裹单词边界,构建正则匹配模式
pattern = r'\b(' + '|'.join(keywords) + r')\b'
# 指定需要搜索的目标列
target_cols = ['title', 'scope', 'description', 'review']

# 简化多列判断逻辑:只要任意一列匹配到完整关键词,就标记为1
df["NewValue"] = np.where(
    df[target_cols].apply(lambda col: col.str.contains(pattern, regex=True)).any(axis=1),
    1,
    0
)

关键细节说明

  • \b是正则中的单词边界,它匹配的是字母/数字/下划线与非单词字符(比如空格、标点)之间的位置,确保只有独立存在的book、train才会被命中。
  • 用df[target_cols].apply(...)批量处理所有目标列,any(axis=1)表示只要当前行的任意一列匹配成功,就返回True,最后通过np.where转换成1/0的标记值。
  • 如果你的文本包含带特殊符号的单词(比如full-time),可以根据实际情况调整边界规则,但针对普通关键词,\b完全能满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:06:26