Pandas Series调用find报错,如何提取URL中entry/与/event间的唯一数字?
解决方法
你遇到的错误是因为find、partition是Python单个字符串的方法,而df['URL']是Pandas的Series对象,必须通过.str访问器调用字符串处理方法,才能对Series里的每个元素逐行操作。下面提供几种可行的提取方式:
方法一:正则表达式提取(推荐)
用str.extract匹配URL里的数字模式,这是最简洁高效的方式:
import pandas as pd # 假设你的DataFrame是df df['entry_id'] = df['URL'].str.extract(r'entry/(\d+)/event')
正则表达式r'entry/(\d+)/event'中,(\d+)会精准捕获entry/和/event之间的所有数字,extract会自动将捕获到的内容生成新列。
方法二:字符串分割
通过两次str.split拆分URL,逐步提取目标内容:
# 第一步按'entry/'拆分,取拆分后的第二部分;第二步按'/event'拆分,取第一部分 df['entry_id'] = df['URL'].str.split('entry/').str[1].str.split('/event').str[0]
方法三:位置切片
先用str.find找到目标片段的起止位置,再用str.slice提取:
# 计算数字起始位置:entry/的结束位置 start_pos = df['URL'].str.find('entry/') + len('entry/') # 计算数字结束位置:/event的起始位置 end_pos = df['URL'].str.find('/event') # 切片提取数字 df['entry_id'] = df['URL'].str.slice(start_pos, end_pos)
内容的提问来源于stack exchange,提问作者mgd6
相关产品推荐
相关产品推荐

