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

如何在Pandas DataFrame文本列中批量匹配词集并筛选行?

Pandas 快速筛选包含目标词集的行

直接利用Pandas的str.contains支持正则表达式的特性,把目标词集拼接成OR逻辑的正则模式,一次匹配就能完成筛选,完全不需要循环。

具体步骤与代码示例

  1. 导入依赖库
import pandas as pd
import re
  1. 构造示例数据与目标词集
# 示例DataFrame
df = pd.DataFrame({
    'text': [
        '我喜欢吃苹果和梨',
        '今天买了香蕉',
        '只吃了葡萄',
        '橙子汁真好喝',
        pd.NA
    ],
    'id': [1,2,3,4,5]
})

# 目标匹配词集
S = ['苹果', '香蕉', '橙子']
  1. 生成正则匹配模式
    把词集中的每个词汇转义(避免正则特殊字符干扰,比如.、*这类符号),再用|拼接成OR逻辑的正则串:
pattern = '|'.join(re.escape(word) for word in S)
  1. 执行筛选
# case=False 忽略大小写,na=False 过滤空值行
df_filtered = df[df['text'].str.contains(pattern, case=False, na=False)]

执行后df_filtered会保留所有text列包含苹果/香蕉/橙子的行。

进阶:精确匹配英文单词

如果是英文场景,需要匹配完整单词(避免"apples"被识别为包含"apple"),可以给正则加上单词边界\b:

# 适用于英文单词的精确匹配
pattern = r'\b(' + '|'.join(re.escape(word) for word in S) + r')\b'
df_filtered = df[df['text'].str.contains(pattern, case=False, na=False)]

为什么这个方法更优

  • 效率远高于循环匹配,尤其是数据量较大时,正则匹配是矢量化操作,内部优化更高效
  • 自动处理词集中的特殊字符,避免正则语法冲突
  • 支持大小写忽略、空值处理等灵活配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:57:19