0

0

如何使用 Pandas 在文本中精准替换匹配 ID 的关键词

花韻仙語

花韻仙語

发布时间:2025-12-29 14:20:18

|

111人浏览过

|

来源于php中文网

原创

如何使用 Pandas 在文本中精准替换匹配 ID 的关键词

本文介绍如何利用正则表达式与 `str.replace()` 配合映射字典,安全、高效地在 pandas dataframe 的文本列中批量替换特定单词(如数字id),避免误替换单词子串。

在实际数据处理中,常需基于外部映射表(如 macros.xlsx)对主表(如 Articles.xlsx)中的文本字段进行关键词替换。例如,将句子中独立出现的 ID(如 "123")精确替换为对应描述(如 "John"),而非简单地用 map() 全值匹配——因为原始文本是完整句子,不是单个 ID。

原始代码失败的根本原因在于:map() 要求 Series 中每个元素完全等于字典键才能替换,而 Content_Text 列存储的是整句(如 "123 will begin..."),并非纯 ID 字符串,因此 map() 无法命中,返回原值。

✅ 正确解法是使用 str.replace() + 正则表达式,实现「在上下文中查找并替换独立单词」:

DubbingX智声云配
DubbingX智声云配

多情绪免费克隆AI音频工具

下载
import pandas as pd
import re

# 读取数据
df_articles = pd.read_excel('Articles.xlsx')
df_macros = pd.read_excel('macros.xlsx')

# 构建替换映射:确保 ID 转为字符串(避免类型不匹配)
replacement_map = df_macros.astype({'ID': str}).set_index('ID')['Description']

# 构造正则模式:\b 表示单词边界,防止 '123' 误匹配 '1234' 或 'x123'
pattern = r'\b(' + '|'.join(re.escape(str(id_val)) for id_val in replacement_map.index) + r')\b'

# 执行安全替换:lambda 捕获匹配项,并查表获取替换值
df_articles['Content_Text'] = df_articles['Content_Text'].str.replace(
    pattern,
    lambda m: replacement_map.get(m.group(0), m.group(0)),  # fallback 保留原文本
    regex=True
)

# 保存结果
df_articles.to_excel('updated_Articles.xlsx', index=False)

? 关键要点说明:

  • ✅ re.escape():自动转义 ID 中可能含有的正则元字符(如 .、*、+),提升鲁棒性;
  • ✅ \b(...)\b:确保只匹配完整单词,例如 "123" 不会匹配 "1234" 或 "a123b";
  • ✅ lambda m: replacement_map.get(...):动态查表,支持任意数量映射关系,且未匹配项可安全保留;
  • ⚠️ 注意大小写敏感:若需忽略大小写,添加 flags=re.IGNORECASE 参数;
  • ⚠️ 若 ID 含空格或特殊符号,建议提前清洗或改用更严格的分词逻辑(如结合 nltk 或正则 \W 边界)。

最终输出将严格按预期更新文本,同时保持原有格式与结构不变,适用于批量文档增强、模板化内容生成等生产场景。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

506

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

245

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

722

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

209

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

343

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

228

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

526

2023.12.06

ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

121

2025.12.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 9.9万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号