pandas使用str.title()转换大小写时如何排除指定全大写缩略词?
解决方案
首先定义需要保留全大写的缩略词列表,利用正则的单词边界匹配规则实现精准替换,可同时覆盖缩略词单独出现、和其他词组合出现的场景,也不会误改包含相同字母序列的其他单词。
具体操作逻辑如下:
- 先对整列执行原本的
title()大小写转换,完成普通词汇的格式调整 - 遍历自定义的缩略词列表,将所有作为独立单词存在、被错误转换为首字母大写的缩略词,替换回原本的全大写格式
示例代码:
# 定义需要保留全大写的缩略词列表,可根据需求自行增删 acronyms = ["SAP", "HANA", "FOX", "INC"] # 第一步:执行通用title格式转换 df['Stock'] = df['Stock'].str.title() # 第二步:遍历修正缩略词格式,\b为正则单词边界标识符,避免匹配到单词内部的相同字符 for acro in acronyms: target_pattern = rf'\b{acro.title()}\b' df['Stock'] = df['Stock'].str.replace(target_pattern, acro, regex=True)
效果验证:
- 原内容
SAP HANA→ 经过title转换为Sap Hana→ 修正后为SAP HANA - 原内容
FOX CORPORATION→ 经过title转换为Fox Corporation→ 修正后为FOX Corporation - 原内容
APPLE INC→ 经过title转换为Apple Inc→ 修正后为Apple INC - 原内容
Sapori Trattoria→ 经过title转换为Sapori Trattoria→ 因Sap后无单词边界不会被匹配,最终保留原格式不变
如果需要将多词组合的固定缩略词(比如SAP HANA整体作为保留项)也加入规则,直接将组合词添加到acronyms列表即可,现有逻辑无需修改。
内容的提问来源于stack exchange,提问作者RCarmody
相关产品推荐
相关产品推荐

