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

DataFrame中使用正则表达式去除字符串末尾1-2位数字

解决方法

问题根源

你之前的代码有几个关键错误:

  • 开启了regex=False,这会让str.replace把你的正则表达式当成普通字符串去匹配,完全不会按正则逻辑处理
  • 匹配的正则模式写得太死板,只能匹配特定结构的字符串,没法覆盖你给出的所有示例
  • 替换内容用了正则语法,但同样因为regex=False,这些语法会被直接当成普通字符输出,根本达不到效果

正确实现

针对你要去除字符串末尾1位或2位数字的需求,有两种简单可靠的写法:

方法一:直接替换末尾的1-2位数字

data['id'] = data['id'].str.replace(r'\d{1,2}$', '', regex=True)
  • \d{1,2}:匹配1到2位数字
  • $:锚定字符串末尾,确保只替换最后面的数字
  • 必须设置regex=True(pandas中默认是True,但显式写上更清晰)

方法二:提取末尾数字前的内容

如果需要更明确地提取目标部分,可以用str.extract:

data['id'] = data['id'].str.extract(r'^(.*?)\d{1,2}$')[0]
  • ^(.*?):从字符串开头开始,非贪婪匹配所有内容,直到遇到末尾的1-2位数字
  • \d{1,2}$:匹配末尾的1-2位数字
  • extract会提取括号里的分组内容,也就是我们需要的部分

测试验证

用你给出的示例数据测试:

  • 输入App2Aa1 → 输出App2Aa
  • 输入Cry10Aa4 → 输出Cry10Aa
  • 输入Cry2Ac10 → 输出Cry2Ac
    完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:09:25