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

如何用index df关键词匹配main df的product列并新增keyword列

问题解决:DataFrame关键词匹配赋值错误

错误原因

你当前的代码逻辑存在问题:循环中仅计算了每行匹配关键词的mask,但未根据mask为对应行分配关键词;循环结束后直接将最后一个遍历的关键词E220F赋值给整个keyword列,导致所有行都显示该值。

解决方案

方案1:循环内根据mask赋值

先初始化keyword列,再在循环中为匹配到的行赋值对应关键词:

# 初始化keyword列为空值
df_import_tmp0['keyword'] = None
# 从index df提取关键词列表
key_word = index_df['product'].tolist()

for key in key_word:
    mask = df_import_tmp0["product"].str.contains(key)
    # 为匹配成功的行赋值当前关键词
    df_import_tmp0.loc[mask, 'keyword'] = key

方案2:使用apply函数(更简洁)

通过apply逐行检查并返回匹配的关键词:

key_word = index_df['product'].tolist()

def match_keyword(product_str):
    for key in key_word:
        if key in product_str:
            return key
    return None

df_import_tmp0['keyword'] = df_import_tmp0['product'].apply(match_keyword)

方案3:正则提取(效率更高)

将关键词拼接为正则表达式,用str.extract直接提取匹配内容:

import re
# 转义关键词避免正则语法冲突,再拼接成匹配规则
pattern = '|'.join(re.escape(key) for key in index_df['product'].tolist())
df_import_tmp0['keyword'] = df_import_tmp0['product'].str.extract(f'({pattern})', expand=False)

验证结果

执行任意方案后,main df的keyword列将正确显示为[C2, VA, E220F, 7350M]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:54:11