0

0

使用 Pandas 正则替换文本中匹配 ID 的特定值为对应描述

聖光之護

聖光之護

发布时间:2025-12-29 17:34:02

|

282人浏览过

|

来源于php中文网

原创

使用 Pandas 正则替换文本中匹配 ID 的特定值为对应描述

本文介绍如何利用 pandas 的 `str.replace()` 配合正则表达式,精准替换文本列中与外部映射表 id 完全匹配的单词(非子串),实现多处、多次、上下文安全的批量文本替换。

在实际数据处理中,常需将自由文本中出现的标识符(如编号、代码、代号)按映射关系替换成可读性更强的描述性内容。例如,将句子中独立出现的 "123" 替换为 "John",但不能把 "1234" 中的 "123" 误替换。原始代码中使用 .map() 是错误的——它仅对整字段值做一对一映射,而 Content_Text 是句子而非单个 ID,因此无法生效。

正确做法是:基于正则表达式进行子字符串级的全局查找与替换,同时确保只匹配完整单词(word boundary \b),避免部分匹配。以下是完整、健壮的实现方案:

import pandas as pd
import re

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

# 构建映射 Series:ID → Description(注意转为字符串以统一类型)
mapping_series = df_macros.astype({'ID': str}).set_index('ID')['Description']

# 构造正则模式:\b(123|345|678)\b → 匹配独立单词形式的 ID
pattern = r'\b(' + '|'.join(re.escape(str(id_val)) for id_val in mapping_series.index) + r')\b'

# 执行安全替换:对每个匹配项,用 mapping_series 查找对应描述
df_articles['Content_Text'] = df_articles['Content_Text'].str.replace(
    pattern,
    lambda m: mapping_series.get(m.group(0), m.group(0)),  # 若无映射则保留原值
    regex=True
)

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

关键要点说明:

Z Code
Z Code

智谱AI推出的轻量级AI代码编辑器

下载
  • re.escape() 防止 ID 中含正则元字符(如 .、*、+)导致匹配异常;
  • \b 确保只匹配独立单词边界(如 "123" ✅,不匹配 "1234" 或 "a123b" ❌);
  • lambda m: mapping_series.get(...) 支持动态查表,且对未命中项默认保留原文,增强鲁棒性;
  • 使用 str.replace(..., regex=True) 而非 map(),才能作用于字符串内部子片段。

⚠️ 注意事项:

  • 若 ID 列含空值或重复值,请先清洗:df_macros = df_macros.dropna(subset=['ID']).drop_duplicates(subset=['ID']);
  • 大文本量时建议先用 df_articles['Content_Text'].sample(5).tolist() 手动验证替换逻辑;
  • 如需区分大小写或支持更多文本规则(如忽略标点邻接),可进一步扩展正则模式(如 \b(?

该方法兼顾准确性、可读性与工程实用性,是处理“文本内符号化占位符替换”任务的标准 Pandas 实践。

相关专题

更多
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

俄罗斯搜索引擎Yandex最新官方入口网址
俄罗斯搜索引擎Yandex最新官方入口网址

Yandex官方入口网址是https://yandex.com;用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.29

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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号