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

如何使用正则表达式提取pandas列中连续的三位数字?

问题原因

当前写法无法得到预期结果的核心原因:

  1. str.findall会返回所有匹配结果组成的列表,无匹配结果时直接取下标[0]会返回NaN,str.extract更适合提取首个符合规则的匹配内容,语法更简洁
  2. 出现01-1这类包含非数字字符的匹配结果,说明你实际使用的正则存在笔误,标准\d仅匹配0-9的数字字符,不会匹配横杠、点等特殊符号
解决代码

直接使用str.extract匹配连续三位数字即可:

df['col'].astype(str).str.extract(r'(\d{3})', expand=False)

如果需要严格过滤从更长数字串中截取三位的情况(比如12345不会被错误匹配到123),可以加数字边界断言:

df['col'].astype(str).str.extract(r'(?<!\d)(\d{3})(?!\d)', expand=False)
效果验证
  • 输入GF-01-1 G.888 SSRS,输出:888
  • 输入MMS1-CG343 SSRS,输出:343

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:07