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

Python解析含名称与数字的字符串列时如何提取末尾带正负号的数值

解决方案

核心逻辑是利用正则的末尾锚定规则,仅匹配字符串末尾带+/-前缀的数值,同时贪婪匹配前面所有内容作为球队名,不需要复杂的循环校验。

修正后代码

# 直接提取两列,expand=True保证返回DataFrame
dt[['Name2', 'Name3']] = dt['Name'].str.extract(r'^(.*)\s([+-]\d+\.?\d*)$', expand=True)

# 如果需要将Name3转为数值类型,可额外执行
dt['Name3'] = pd.to_numeric(dt['Name3'])

正则说明

  • ^:匹配字符串开头
  • (.*):第一个捕获组,贪婪匹配所有字符,直到满足后面的规则为止,对应完整球队名
  • \s:匹配数值前的最后一个空格
  • ([+-]\d+\.?\d*):第二个捕获组,强制以+或-开头,后面跟整数/小数格式的数值,对应需要提取的数值部分
  • $:匹配字符串结尾,强制要求数值部分必须在整段文本的最后,避免匹配到队名中间的数字

效果验证

针对所有示例格式都可以正确拆分:

原始Name列值Name2提取结果Name3提取结果
New Orleans Saints +2New Orleans Saints+2
San Francisco 49ers +5San Francisco 49ers+5
San Francisco 49ers -5San Francisco 49ers-5
San Francisco 49ers +8.5San Francisco 49ers+8.5
San Francisco 49ers -8.5San Francisco 49ers-8.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:07