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

Pandas DataFrame正则匹配如何用AND逻辑同时匹配所有指定关键词?

简洁实现方案

方案1:关键词列表遍历(扩展性最优)

把需要匹配的关键词统一存为列表,结合all()方法判断所有关键词是否都在当前行出现,后续新增关键词只需修改列表即可,无需调整判断逻辑:

import pandas as pd
import re

df = pd.DataFrame({'a':['base','rhino','gray','horn'],
                   'b':['rhino','elephant', 'gray','trunk'],
                   'c':['cheese','lion', 'beige','mane']})

# 定义需全部匹配的关键词列表
keywords = ['rhino', 'elephant', 'lion']

row_index = df.index[df.apply(
    lambda row: all(row.str.contains(key, case=False, regex=True).any() for key in keywords),
    axis=1
)].tolist()

print(row_index) # 输出结果:[1]

如果需要严格匹配整个单元格的值等于关键词,将str.contains替换为str.match即可。

方案2:单正则正向前瞻实现

如果偏好使用单个正则表达式完成匹配,可以用正向前瞻语法强制要求同时命中所有关键词,适合关键词数量较少的场景:

pattern = r'(?s)(?=.*rhino)(?=.*elephant)(?=.*lion)'
row_index = df.index[df.apply(
    lambda x: x.str.contains(pattern, flags=re.IGNORECASE).any(),
    axis=1
)].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:36:04