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

在Pandas中对列字符串进行替换并保留指定有效内容

Pandas数据清洗:批量处理SHIPMENT_PROVIDER列的两种字符串替换场景

针对你需要处理的SHIPMENT_PROVIDER列字符串替换需求,你可以通过优先匹配更长目标字符串的正则策略,一次性覆盖两种场景:

需求回顾

  • 保留原始的Usps和Usps International
  • 将Usps后接随机字符的内容(如Uspsxy3)替换为Usps
  • 将Usps International后接随机字符的内容(如Usps Internationalxyz)替换为Usps International

解决方案代码

推荐使用字典形式的正则替换,逻辑更清晰且能保证优先匹配更长的模式:

orders['SHIPMENT_PROVIDER'] = orders['SHIPMENT_PROVIDER'].replace(
    {
        r'^(Usps International)[a-zA-Z0-9]+$': r'\1',
        r'^(Usps)[a-zA-Z0-9]+$': r'\1'
    },
    regex=True
)

逻辑说明

  1. 正则规则按从长到短的顺序排列,确保Usps Internationalxxx这类字符串会被第一条规则优先匹配,替换为捕获到的Usps International
  2. 第二条规则处理剩下的Uspsxxx格式字符串,替换为捕获到的Usps
  3. 原始的Usps和Usps International因为没有后续随机字符,不会被任何规则匹配,保持原样

也可以用单个正则表达式实现,利用分支匹配的优先级:

orders['SHIPMENT_PROVIDER'] = orders['SHIPMENT_PROVIDER'].replace(
    to_replace=r'^(Usps International)([a-zA-Z0-9]+)$|^(Usps)([a-zA-Z0-9]+)$',
    value=r'\1\3',
    regex=True
)

这里正则分支会先尝试匹配前半部分的Usps International模式,匹配失败才会尝试后半部分的Usps模式,替换时取对应捕获组的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:01:25