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

如何判断DataFrame列是否包含另一DataFrame列文本并新增匹配列?

解决方案:可扩展的DataFrame关键词匹配方案

这里提供两种无需修改核心代码、就能适配关键词新增/修改的实现方式:

方法1:正则提取+映射(高效推荐)

通过正则批量匹配所有关键词,再用映射表关联分类,适合数据量较大的场景:

import pandas as pd
import re

# 初始化示例数据
df1 = pd.DataFrame({
    "Problem": ["我收到了错误的商品", "我支付超额了", "地址问题", "我的配送延迟了"],
    "Region": ["A", "A", "B", "C"]
})

df2 = pd.DataFrame({
    "Key": ["wrong", "pay", "delay"],
    "Category": ["Accuracy", "Pay related", "Delay related"]
})

# 1. 生成关键词到分类的映射字典
key_to_category = df2.set_index("Key")["Category"].to_dict()

# 2. 拼接所有关键词为正则匹配模式
pattern = "|".join(df2["Key"])

# 3. 提取匹配的关键词并映射到分类
df1["Category"] = df1["Problem"].str.extract(f"({pattern})", flags=re.IGNORECASE)[0].map(key_to_category)

# 输出结果
print(df1)

说明:

  • 新增/修改关键词时,直接更新DF2即可,无需改动代码逻辑
  • flags=re.IGNORECASE 用于忽略大小写匹配,不需要可直接移除
  • 若单条Problem匹配多个关键词,会取DF2中先出现的关键词对应的分类

方法2:自定义函数+apply(灵活直观)

如果需要自定义匹配规则(比如模糊匹配、优先级排序),可以用这种方式:

import pandas as pd

# 初始化示例数据(同上,省略)

# 构建关键词-分类映射
key_category_map = df2.set_index("Key")["Category"].to_dict()

def match_category(problem_text):
    for key, category in key_category_map.items():
        if key in problem_text:
            return category
    return None

# 给每条Problem匹配分类
df1["Category"] = df1["Problem"].apply(match_category)

# 输出结果
print(df1)

说明:

  • 可以在match_category函数里扩展逻辑,比如用re.search实现复杂正则匹配
  • 调整DF2的行顺序,就能改变关键词的匹配优先级

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:45:38