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

Pandas使用replace函数给列内字符串中不足3位的数字补前导0

正确实现方案

你遇到的是正则替换中分组引用后接数字的歧义问题,Python的re模块支持\g<分组序号>的显式分组引用语法,完全避免和后续数字混淆的问题。

方法1:直接修改原正则替换写法

把原来的\1、\2替换为\g<1>、\g<2>即可,代码如下:

df.replace({'Freq': r'^([A-Za-z]+)(\d{2}[A-Za-z]*)$'}, {'Freq': r'\g<1>0\g<2>'}, regex=True, inplace=True)

方法2:更通用的补零方案(推荐)

如果需要同时适配1位、2位数字的补零需求(比如XXX5KHz转XXX005KHz),用拆分字段再补零的方案鲁棒性更强,不需要处理正则替换的歧义问题:

# 拆分出前缀、数字、后缀三个部分
freq_parts = df['Freq'].str.extract(r'^([A-Za-z]+)(\d+)([A-Za-z]+)$')
# 数字部分补前导0到3位后重新拼接
df['Freq'] = freq_parts[0] + freq_parts[1].str.zfill(3) + freq_parts[2]

两种方案都可以实现需求,方法2适配场景更广,更推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:48:02