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

如何从pandas列存储的URL中提取指定子串并存入新列

pandas从URL列提取指定子串的正确实现

原有代码存在两个错误:

  • 匿名函数内部误用了未定义的变量st,应该替换为当前遍历的变量x
  • find("/")只会匹配第一个斜杠的位置,无法定位到目标子串前的最后一级路径斜杠

方案1:使用pandas内置str.extract(推荐)

用正则匹配直接提取目标片段,性能远高于apply,代码更简洁:

import pandas as pd

s = pd.Series(['https://url-location/img/xxxyyy_image1.png'])
# 提取目标子串,expand=False返回Series而非DataFrame
extracted = s.str.extract(r'.*/([^_]+)_.*', expand=False)

# 若是DataFrame要存入新列,写法为:
# df['new_col'] = df['url_col'].str.extract(r'.*/([^_]+)_.*', expand=False)

正则说明:.* / 贪婪匹配到最后一个斜杠位置,([^_]+) 捕获所有非下划线的字符(即目标子串xxxyyy),后续_.*匹配下划线后的剩余内容。

方案2:修正原有apply写法

如果坚持使用切片逻辑,修正后写法如下:

extracted = s.apply(lambda x: x[x.rfind("/")+1 : x.find("_", x.rfind("/")+1)])

逻辑说明:用rfind("/")定位最后一个斜杠的索引,作为切片起始位置,再从该起始位置往后查找第一个下划线的索引作为切片结束位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:06:04