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

如何高效匹配pandas DataFrame列关键词并批量填充分类值

高效实现方案

核心采用pandas向量化操作替代逐行遍历,针对你提到的5000行主表、2000行唯一表的量级,可以实现毫秒级运算返回。

步骤1:生成有效关键词-分类映射

首先过滤df_unique中find列为空的无效条目,生成关键词到分类的映射字典:

import pandas as pd
import numpy as np
import re # 关键词含正则特殊字符时需要导入

# 过滤非空的关键词映射关系
keyword_map = df_unique.dropna(subset=['find']).set_index('find')['category'].to_dict()

步骤2:批量匹配填充分类

有两种常用的高效实现方式,按需选择即可:

方式1:逐关键词匹配(兼容性更强)

# 初始化分类列为空
df_master['category'] = np.nan

# 遍历所有有效关键词做向量化匹配
for keyword, cate in keyword_map.items():
    # case=False 表示不区分大小写,不需要可以删掉
    df_master.loc[df_master['sentence'].str.contains(keyword, case=False, na=False), 'category'] = cate

方式2:正则一次匹配(效率更高)

如果不会出现多个关键词同时匹配同一句子的场景,可以用正则扫描一次完成匹配,效率更高:

# 按关键词长度倒序排列,避免短关键词被长关键词覆盖的问题
# 如果关键词含正则特殊字符,需要替换为:re.escape(k) for k in sorted(...)
sorted_keywords = sorted(keyword_map.keys(), key=len, reverse=True)
pattern = '|'.join(sorted_keywords)

# 提取匹配到的关键词后映射为分类
df_master['category'] = df_master['sentence'].str.extract(f'({pattern})', expand=False).map(keyword_map)

两种方式输出的结果都和你需求的df_master_final完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:09:03