将格式为[xx.xx]的object转float时pd.to_numeric返回NaN如何解决
问题原因
你使用pd.to_numeric直接转换返回NaN,是因为待转换的字符串首尾包含[、]非数字字符,pandas无法直接识别这类带特殊符号的字符串为数值,errors='coerce'参数会把无法转换的内容统一置为NaN。
解决方案
先通过字符串处理移除首尾的方括号,再执行数值转换即可,参考代码如下:
coeff_dfethapoly['Slope (b)_d1'] = pd.to_numeric( coeff_dfethapoly['Slope (b)_d1'].str.strip('[]'), errors='coerce' )
如果你的数据中还存在多余空格、方括号位置不固定的情况,可以用正则匹配提取数值部分再转换:
coeff_dfethapoly['Slope (b)_d1'] = pd.to_numeric( coeff_dfethapoly['Slope (b)_d1'].str.extract(r'(\d+\.?\d*)', expand=False), errors='coerce' )
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

