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

如何从DataFrame列提取数字子串并转为整数插入新列

解决方案

你遇到的问题是因为re.findall()返回的是匹配到的所有数字子串组成的列表,哪怕只有一个匹配结果也会以列表格式返回。要得到单个整数并自动去除前导零,可以按以下方式修改代码:

核心思路

  1. 从每个字符串中提取第一个数字子串(假设每行仅对应一个公路编号)
  2. 将提取到的带前导零的数字字符串转换为整数(int类型会自动忽略前导零)

改进代码

基础版(假设每行都能匹配到数字)

import re

# 提取第一个数字子串并转为整数
sp.insert(1, 'StateRoute', [int(re.findall(r'\d+', x)[0]) for x in sp['RouteIdentifier']])

稳健版(处理无数字的行,避免索引报错)

如果存在没有数字的行,基础版会抛出IndexError,可以用以下方式安全处理,无匹配时返回None:

def extract_route_num(s):
    nums = re.findall(r'\d+', s)
    return int(nums[0]) if nums else None

sp.insert(1, 'StateRoute', sp['RouteIdentifier'].apply(extract_route_num))

效果示例

  • 输入'012d' → 输出12(整数类型)
  • 输入'I-95' → 输出95
  • 输入'abc' → 输出None(稳健版)

内容的提问来源于stack exchange,提问作者J. Sizzler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:13:17