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

如何利用含百余个关键词的DataFrame实现Python的.str.contains匹配?

解决方案

核心思路

不用手动拼接关键词,直接把DF2里的关键词列自动转成str.contains能识别的正则表达式(用竖线|分隔多个关键词)就行。

代码实现

先明确两个DataFrame的列名:

  • DF1里要匹配的目标列叫target_col(对应你示例里的month)
  • DF2里存关键词的列叫keywords

情况1:关键词里没有正则特殊字符(比如. * + ?这类)

直接拼接即可:

# 提取DF2的关键词,去掉空值后拼成正则串
pattern = '|'.join(df2['keywords'].dropna().astype(str))
# 在DF1里筛选包含任意关键词的行
matched_rows = df1[df1['target_col'].str.contains(pattern)]
# 如果需要忽略大小写,加case=False参数:
# matched_rows = df1[df1['target_col'].str.contains(pattern, case=False)]

情况2:关键词里有正则特殊字符

要是关键词里带.、*这类正则元字符(比如关键词是Jan.,直接拼会匹配Jan加任意字符),得先把这些字符转义:

import re

# 逐个转义关键词里的正则特殊字符
escaped_keywords = [re.escape(key) for key in df2['keywords'].dropna().astype(str)]
# 拼成正则串
pattern = '|'.join(escaped_keywords)
# 执行匹配
matched_rows = df1[df1['target_col'].str.contains(pattern)]

注意点

  • dropna()必须加,不然DF2里的空值会导致正则串出问题
  • astype(str)是为了确保所有关键词都是字符串类型,避免报错
  • 要不要加case=False看你需求,需要区分大小写就去掉这个参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:16:07