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

如何在Pandas中匹配DataFrame文本列指定词汇并生成匹配列?

解决方案

核心思路

要实现精确匹配完整单词并提取对应词汇,需要用正则表达式结合str.extract方法——它能从文本中抓取符合规则的内容,而不是只判断是否存在。

具体实现代码

import pandas as pd

# 初始化你的两个DataFrame
df_dictionary = pd.DataFrame({'good': ['love', 'like'],
                    'bad': ['dislike', 'hate']})
df_text = pd.DataFrame({'col1': ['i love cats', 'i hate dogs']})

# 生成匹配完整单词的正则表达式(\b确保匹配独立单词,避免部分匹配)
good_words = df_dictionary['good'].dropna().tolist()
good_regex = fr"\b({'|'.join(good_words)})\b"

bad_words = df_dictionary['bad'].dropna().tolist()
bad_regex = fr"\b({'|'.join(bad_words)})\b"

# 提取匹配的词汇到新列,空匹配用空字符串填充
df_text['string_match_good'] = df_text['col1'].str.extract(good_regex, expand=False).fillna('')
df_text['string_match_bad'] = df_text['col1'].str.extract(bad_regex, expand=False).fillna('')

最终效果

运行后df_text的结构完全符合需求:

col1string_match_goodstring_match_bad
i love catslove
i hate dogshate

关键细节说明

  • \b是正则的单词边界,确保只匹配独立的完整单词,比如不会把loved误识别为love
  • dropna()处理字典中可能存在的空值,避免正则表达式出错
  • 如果一行有多个同类型匹配词汇,可改用str.findall再拼接,比如df_text['col1'].str.findall(good_regex).str.join(', ')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:24:46