dataframe中string转float问题

问题

报错

ValueError: could not convert string to float

问题描述:在数据采集的过程中,由于各种原因导致一些错误发生,而使得存入txt或者csv的数据并不一定是“”,可能会出现空值或者类似’-0.6827.1’这样的值。当用pandas读取数据之后,调用data.info()显示列的类型为object,列中单元格存的是string格式,如图:
在这里插入图片描述

调用

data=pd.DataFrame(data,dtype=np.float)

把数据转换成float类型,会出现报错:

ValueError: could not convert string to float: '-0.6827.1'

解决方案

最好的方式就是把这个值换成0或者把包含这个值的这一条数据删除。但因为数据量巨大,依靠人眼是不可能找到’-0.6827.1’这个值在哪里的,这里给出一个解决方法:

#获取所有列名
col = list(data.columns)

#分别对每一列调用apply方法,出错的地方填入NaN
data[col] = data[col].apply(pd.to_numeric, errors='coerce')

#删除含有NaN的行
data = data.dropna(axis=0,how='all')

结果如下:
在这里插入图片描述
参考:https://vimsky.com/article/3694.html


版权声明:本文为baidu_38963740原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。