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

如何替换Pandas DataFrame中以BR开头的字符串列最后三个字符

解决巴西邮政编码批量替换问题

你之前的代码没生效,核心问题是用了.all()方法——它要求所有邮政编码都以BR开头才会执行替换,但你的数据里包含GB、NO等其他国家的编码,导致条件永远不成立,替换逻辑根本没运行。

下面是几种可行的修正方案:

方法一:布尔索引定位替换

先筛选出以BR开头的行,再针对性替换:

# 生成筛选条件:定位所有BR开头的邮政编码
mask = df['postcode'].str.startswith('BR')
# 对符合条件的行,替换最后三个字符为000
df.loc[mask, 'postcode'] = df.loc[mask, 'postcode'].str.replace(r'.{3}$', '000')

方法二:用numpy.where简化逻辑

通过条件判断直接完成赋值,代码更紧凑:

import numpy as np

df['postcode'] = np.where(
    df['postcode'].str.startswith('BR'),
    df['postcode'].str.replace(r'.{3}$', '000'),
    df['postcode']  # 不符合条件的编码保持原样
)

方法三:用str.slice_replace直观操作

如果明确要替换最后三位,用切片替换的可读性更强:

mask = df['postcode'].str.startswith('BR')
df.loc[mask, 'postcode'] = df.loc[mask, 'postcode'].str.slice_replace(start=-3, repl='000')

执行任意一种方案后,所有BR开头的邮政编码最后三位都会被替换为000,其他国家的编码则保持原格式不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:36:10