Python如何提取DataFrame内存储的URL片段中的数字运动员ID
解决方案
直接使用Pandas内置的str.extract方法配合正则表达式提取,无需手动遍历循环,效率更高、逻辑更稳定:
# 直接提取ID存入新列athleteID,提取结果为字符串格式 df2['athleteID'] = df2['athleteURL'].str.extract(r'athleteNumber=(\d+)') # 如果需要转换为整数格式,可添加astype转换 df2['athleteID'] = df2['athleteURL'].str.extract(r'athleteNumber=(\d+)').astype(int) # 如果需要单独提取为列表使用 athlete_id_list = df2['athleteID'].tolist()
方案说明
- 正则表达式
r'athleteNumber=(\d+)'中,\d+匹配连续的数字,括号标记的分组会被str.extract直接捕获返回 - 该方法是Pandas的向量化操作,底层由C实现,数据量越大相比手动Python循环的效率优势越明显
- 适配性更强,不受HTML片段其他属性变化、URL参数顺序变化的影响,只要
athleteNumber参数存在就能正确提取到对应数字
原方法存在的问题
- 手动遍历循环效率低,数据量过大会有明显的性能瓶颈
- 固定取索引位置的逻辑非常脆弱,只要URL结构、参数、HTML属性有一点变化,就会出现取错值的问题
内容的提问来源于stack exchange,提问作者gcc72
相关产品推荐
相关产品推荐

