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

如何匹配pandas Series文本列中同时包含多个指定关键词/字符的内容?

你的原有写法存在三个问题:

  • |在正则中代表或逻辑,不符合你要同时匹配所有关键词的需求
  • $是正则特殊元字符,代表字符串结尾,不转义的话无法匹配字面量的$符号
  • str.match()要求从字符串开头匹配规则,你需要匹配任意位置出现的关键词,应该用str.contains()

方式1:逐个关键词判断(可读性最高,不容易踩坑)

import re

# 转义所有关键词里的正则特殊字符,避免$这类符号被错误解析
escaped_keywords = [re.escape(k) for k in keywords_to_track]

# 用&连接所有匹配条件,实现同时满足的与逻辑,case=False代表忽略大小写
match_mask = (
    dataframe["title"].str.contains(escaped_keywords[0], case=False)
    & dataframe["title"].str.contains(escaped_keywords[1], case=False)
    & dataframe["title"].str.contains(escaped_keywords[2], case=False)
)

输出的match_mask就是你需要的布尔类型Series。

方式2:单正则正向前瞻写法

如果要合并成一个正则表达式,可以用正向前瞻实现与逻辑:

import re

# 生成前瞻匹配规则,要求所有关键词都出现
pattern = "".join(f"(?=.*{re.escape(k)})" for k in keywords_to_track)
match_mask = dataframe["title"].str.contains(pattern, case=False, regex=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:24:04