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

Pandas如何通过正则为DataFrame列中指定数字字符串片段加括号

pandas 对DataFrame列做正则动态替换的正确实现

直接使用带捕获组的正则搭配str.replace即可实现需求,核心替换代码如下:

df["Superheros"] = df["Superheros"].str.replace(
    pat=r'\bis Nr (\d+)\b',
    repl=r'(Nr \1)',
    regex=True
)

逻辑说明

  • 正则模式中用圆括号()包裹需要保留的动态数字部分,这部分就是捕获组,替换字符串中用\1即可引用第一个捕获组匹配到的实际内容,自动适配任意长度的数字后缀。
  • 前后加\b单词边界是为了避免误匹配其他非目标片段(比如超级英雄名称末尾刚好带"is"字符的极端场景)。
  • 显式指定regex=True是为了兼容不同pandas版本的默认参数差异,避免部分版本默认关闭正则匹配导致替换失效。

原有写法的问题

  • 第一种写法直接在替换字符串里写\d,不会自动映射匹配到的数字,只会把\d当成普通字符串写入结果,核心原因是没有通过捕获组引用动态匹配内容。
  • 第二种写法调用str.re.sub是错误的API用法,pandas Series的.str访问器下没有挂载re子模块,正则替换直接通过.str.replace()传入正则参数即可。

运行代码后得到的结果完全符合预期:

0         Spiderman (Nr 1)
1             Batman (Nr 4)
2                    Joker
3          Iron Man (Nr 2)
4                     Hulk
5          Captain America
6    Wonderwoman (Nr 3)
Name: Superheros, dtype: object

如果后续数字格式有变化(比如多位数、带小数位),只需要调整捕获组内的正则匹配规则即可,替换逻辑不需要改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:18:18