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

如何在Pandas中通过Python正则反向引用实现大小写转换

问题根因

你写的原有代码无法实现预期效果的核心原因:"Mc"+r'\1'.upper()这段逻辑是在字符串拼接阶段就提前执行完成的,此时r'\1'只是普通的原始字符串,大写转换操作不会作用于后续正则匹配到的捕获组内容,最终实际传入replace的替换规则仍然是"Mc\1",所以匹配到的小写字母没有被大写转换。

可行解决方法

方案1:使用str.replace的回调函数(推荐,适配pandas 1.3.0及以上版本)

pandas的str.replace方法在regex模式下支持传入回调函数处理匹配结果,直接对捕获到的内容做大写转换:

import pandas as pd

data={'Name':['Mcdonald']}
df=pd.DataFrame(data)
df['Name'] = df['Name'].str.replace(r'Mc([a-z])', lambda match: f"Mc{match.group(1).upper()}", regex=True)

运行后df['Name']的结果为McDonald,符合预期。

方案2:结合apply和re.sub实现(兼容低版本pandas)

如果使用的pandas版本低于1.3.0,不支持str.replace传入回调,可以用apply搭配正则库的sub方法实现:

import pandas as pd
import re

data={'Name':['Mcdonald']}
df=pd.DataFrame(data)
df['Name'] = df['Name'].apply(lambda x: re.sub(r'Mc([a-z])', lambda m: f"Mc{m.group(1).upper()}", x))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:06:03