问题
报错
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