如何基于pandas DataFrame一列内容删除另一列的重复词汇
实现方案
首先导入依赖库:
import pandas as pd import re
步骤1:构造测试数据(可跳过直接看核心逻辑)
我们先构造和你需求一致的示例DataFrame方便验证效果:
df = pd.DataFrame({ "目标关键词": ["Dog", "Cat", "Apple"], "对应文本内容": ["Dog is good", "I like Cat very much", "Apple banana apple orange"] })
步骤2:核心处理逻辑
我们通过逐行匹配+正则替换实现忽略大小写的关键词删除,同时处理替换后产生的多余空格:
def clean_text(row): # 构造正则规则:\b代表词边界,避免误删包含关键词的其他词汇;re.IGNORECASE忽略大小写 # re.escape用于处理关键词包含正则特殊字符的场景,比如关键词含.、?等符号也能正常匹配 pattern = re.compile(r'\b' + re.escape(row["目标关键词"]) + r'\b', re.IGNORECASE) # 替换匹配到的关键词为空 res = pattern.sub("", row["对应文本内容"]) # 清除多余空格:多个连续空格换成单个,删除首尾空格 res = re.sub(r"\s+", " ", res).strip() return res # 应用函数到每一行,你可以直接覆盖原文本列,也可以新增列存储结果 df["处理后文本"] = df.apply(clean_text, axis=1)
处理效果示例
处理后的DataFrame结果如下:
| 目标关键词 | 对应文本内容 | 处理后文本 |
|---|---|---|
| Dog | Dog is good | is good |
| Cat | I like Cat very much | I like very much |
| Apple | Apple banana apple orange | banana orange |
注意事项
- 如果你不需要限定匹配独立词汇(比如关键词是
cat时,连category里的cat也要删除),把正则里的\b去掉即可 - 如果你的关键词可能包含多个词,只需要调整正则规则即可适配
内容的提问来源于stack exchange,提问作者Javid Babayev
相关产品推荐
相关产品推荐

