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

如何基于DataFrame2的词库为DataFrame1新增单词匹配布尔值列

实现方案

前置说明

我们先统一约定列名,你可以根据自己的实际表结构替换:

  • DataFrame1(简称df1)中存储逗号分隔单词的列名为 word_str
  • DataFrame2(简称df2)中存储单个单词的列名为 single_word
  • 新增的结果列名为 has_target

核心实现代码

两种方案可选,优先推荐向量化方案,大数据量下性能优势明显:

方案1:向量化操作(推荐,适合万级以上数据量)

import pandas as pd

# 1. 把df2的单词转成集合,成员查询效率比列表高数十倍
target_words = set(df2['single_word'])

# 2. 拆分字符串匹配,直接生成1/0结果列
df1['has_target'] = df1['word_str'].str.split(',\s*', expand=True)\
                                   .isin(target_words)\
                                   .any(axis=1)\
                                   .astype(int)

方案2:apply遍历(写法直观,适合中小数据量)

target_words = set(df2['single_word'])
df1['has_target'] = df1['word_str'].apply(
    lambda s: 1 if any(word.strip() in target_words for word in s.split(',')) else 0
)

逻辑说明

  • 转集合的目的是把单词查询的时间复杂度从O(n)降到O(1),数据量越大性能收益越高
  • 拆分字符串时用,\s*匹配逗号加任意数量空格,兼容示例中逗号后带空格的格式,避免空格导致匹配失败
  • any(axis=1) 只要该行有任意一个单词匹配成功就返回True,转成int后自动变为1,无匹配则为0,完全符合需求规则

注意事项

如果df1的word_str列存在空值,需要先做空值处理避免报错,在执行上述代码前加一行:
df1['word_str'] = df1['word_str'].fillna('')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:15:05