如何检测pandas DataFrame中的整数并添加Road前缀,解决ValueError报错
问题原因
- 原代码直接对整段字段值执行int转换,只要值包含非数字字符就会触发类型转换报错
- 循环内直接对整个
ROAD_NAME_NUMBER列赋值,会批量修改所有行内容,无法实现逐行判断的需求
实现方案
方案1:仅纯整数字符串加前缀
如果你的需求是仅当字段内容全为整数时才加Road前缀,非纯数字内容保持不变,可通过字符串isdigit()方法判断:
import pandas as pd df = pd.DataFrame({'ROAD_NAME_NUMBER':['4','2','1','8','2','AVE 5,LANE 2']}) df['ROAD_NAME_NUMBER'] = df['ROAD_NAME_NUMBER'].apply( lambda x: f'Road {x}' if x.isdigit() else x )
运行后输出结果:
ROAD_NAME_NUMBER 0 Road 4 1 Road 2 2 Road 1 3 Road 8 4 Road 2 5 AVE 5,LANE 2
方案2:所有出现的整数都加前缀
如果需要把字段中所有出现的整数都加上Road前缀,可通过正则替换实现:
import pandas as pd import re df['ROAD_NAME_NUMBER'] = df['ROAD_NAME_NUMBER'].apply( lambda x: re.sub(r'(\d+)', r'Road \1', x) )
运行后输出结果:
ROAD_NAME_NUMBER 0 Road 4 1 Road 2 2 Road 1 3 Road 8 4 Road 2 5 AVE Road 5,LANE Road 2
内容的提问来源于stack exchange,提问作者bellatrix
相关产品推荐
相关产品推荐

