Pandas中将含/符号的string类型列转换为数值类型的实现方法
问题解决方法
最优方案(向量化操作,效率最高,适合所有数据规模)
你只需要先把col2的字符串按/分割,取分子部分转为浮点型后除以10即可,原生向量化操作比apply类遍历方法性能高几十到上百倍:
# 分割字符串取分子→转浮点→除以10得到目标值 df['col2'] = df['col2'].str.split('/', expand=True)[0].astype('float32') / 10
执行后col2就会变成你需要的[0.77, 0.82, 0.58, 0.92, 0.89]浮点型数值。
其他可选方案(适合特殊场景)
如果后续你的分母不固定为10,且数据来源完全可控没有注入风险,可以用pd.eval直接计算表达式结果:
df['col2'] = df['col2'].apply(pd.eval)
该方法会直接解析字符串里的四则运算表达式得到结果,但不推荐用于大数据量或者不可信数据源的场景。
原方法失效原因
pd.to_numeric只能识别纯数值格式的字符串,无法处理带/等运算符的混合字符串,必须先做预处理提取有效数值部分再转换。
内容的提问来源于stack exchange,提问作者Curious
相关产品推荐
相关产品推荐

