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

Python Pandas中替换带括号数值:提取括号内数字的实现问题

问题

需要将Pandas数据框各列中形如number1(number2)的单元格值替换为括号内的number2(例如56(3)→3,33(5)→5)。尝试使用df.replace()时,用lambda函数无法实现依赖匹配内容的替换,代码如下:

df.replace(to_replace='[0-9]+([0-9]+)', value=lambda x: int(x.split("(")[1].strip(")")), regex=True)

解决方案1:使用str.extract(推荐)

直接提取括号内的数字,写法更直观:

df = df.apply(lambda col: col.str.extract(r'\((\d+)\)', expand=False).astype(int))
  • 正则\((\d+)\)精准匹配括号内的数字组,extract直接取出该组内容
  • 若不需要整数类型,可去掉.astype(int)保留字符串格式

解决方案2:修正df.replace的lambda写法

原代码的lambda参数错误,df.replace的lambda接收的是匹配对象(Match object),需通过group()方法获取捕获组内容:

df.replace(to_replace=r'\d+\((\d+)\)', value=lambda m: int(m.group(1)), regex=True)
  • 正则修正为r'\d+\((\d+)\)',确保完全匹配数字(数字)的格式
  • 用m.group(1)直接获取括号内的捕获组内容,转成整数返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:15:16