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

如何从DataFrame字符串列中移除指定DataFrame中的单词?

解决方案

没问题,这是个很常见的文本清洗需求,用pandas结合正则表达式就能轻松搞定,下面是具体的实现步骤和示例:

核心思路

我们需要精准匹配并移除完整单词(避免误删包含目标单词的其他词汇,比如不会把"likes"当成"like"删掉),然后处理替换后可能出现的多余空格。

步骤1:构建匹配规则

先把df2里的单词提取成列表,再生成一个能匹配完整单词的正则模式——这里要注意转义特殊字符,防止正则解析出错:

import re
import pandas as pd

# 提取df2中的单词列表(假设列名为'Wordlist')
stop_words = df2['Wordlist'].tolist()
# 构建正则:匹配完整单词,支持处理带特殊字符的单词
pattern = r'\b(' + '|'.join(re.escape(word) for word in stop_words) + r')\b'

步骤2:执行替换操作

用pandas的字符串替换方法,把目标列中匹配到的单词清空:

# 假设df的目标列是'ColString'
df['ColString'] = df['ColString'].str.replace(pattern, '', regex=True)

步骤3:优化多余空格(可选但推荐)

替换后可能会出现多个连续空格(比如原句中"like"前后的空格会变成两个),可以统一处理成单个空格:

# 把多个连续空格替换成单个
df['ColString'] = df['ColString'].str.replace(r'\s+', ' ', regex=True)
# 要是需要的话,还可以去掉首尾的空格
df['ColString'] = df['ColString'].str.strip()

完整示例(对应你的例子)

把代码跑起来看看效果:

# 构建示例数据
df = pd.DataFrame({'ColString': ["I would like to buy apples."]})
df2 = pd.DataFrame({'Wordlist': ["like", "apples"]})

# 提取停用词并构建正则
stop_words = df2['Wordlist'].tolist()
pattern = r'\b(' + '|'.join(re.escape(word) for word in stop_words) + r')\b'

# 替换+空格优化
df['ColString'] = df['ColString'].str.replace(pattern, '', regex=True)
df['ColString'] = df['ColString'].str.replace(r'\s+', ' ', regex=True)

print(df['ColString'].iloc[0])
# 输出:I would to buy .

额外小技巧

  • 如果需要忽略大小写匹配(比如同时删掉"Like"和"like"),只需要在替换时加个参数:
    df['ColString'] = df['ColString'].str.replace(pattern, '', regex=True, flags=re.IGNORECASE)
    
  • 要是你的单词里有带标点的(比如"apples."),re.escape()会自动处理这些特殊字符,不用担心正则失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:02:00