微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 在Pandas中,当使用read_csv()时,如何将NaN分配给不是dtype的值?

注意:请原谅我非常低技能的英语,随时修改问题的标题,或者下面的文字更容易理解

我的代码中有这一行:

moto = pd.read_csv('reporte.csv')

它发送一个DtypeWarning:Columns(2,3,4,5,6,7,8,9,10,12,13)有混合类型.警告,所以我把它改成了

moto = pd.read_csv('reporte.csv', dtype={'TP': np.float64})

现在它丢弃了一个ValueError:无法将字符串转换为float:’None’.

我用Excel检查了文件(大约200K行),是的,我找到了一些“无”值的单元格.

所以我的问题是:有没有办法忽略错误,或强制python用NaN或其他东西填补违规错误

我尝试了解决方here但它没有用.

解决方法:

我尝试创建一个csv来复制这个反馈,但不能在pandas 0.18上,所以我只能推荐两种方法来处理这个:

第一

如果您知道缺少的值都用字符串’none’标记,那么执行以下操作:

moto = pd.read_csv("test.csv", na_values=['none'])

您还可以向na_values列表添加应转换为NaN的其他标记.

第二

不使用dtype选项再次尝试第一行.

moto = pd.read_csv('reporte.csv')

读取成功是因为您只是收到警告.现在执行moto.dtypes以显示哪些列是对象.对于您要更改的内容,请执行以下操作:

moto.test_column = pd.to_numeric(data.test_column, errors='coerce')

‘coerce’选项会将任何有问题的条目(如’none’)转换为NaN.

要一次转换整个数据框,可以使用convert_objects.您也可以在单个列上使用它,但不推荐使用该选项而使用to_numeric.选项convert_numeric对NaN进行强制:

moto = moto.convert_objects(convert_numeric=True)

完成上述任何一种方法后,请继续执行fillna以执行您需要的操作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐