首页 > 解决方案 > 使用 Dask 读取包含无效数据的 CSV 列并键入 int64

问题描述

读取凌乱的 CSV 数据和清除无效单元格的最佳方法是什么,以便可以正确键入列。

假设您有以下 CSV 数据:

first_name,age
bob,34
mary,10
kat,hi

您想将first_name列键入为对象,将age列键入为 int64。

此代码将出错:

ddf = dd.read_csv("people.csv", dtype={"first_name": "object", "age": "int64"})

这是错误消息:ValueError: invalid literal for int() with base 10: 'hi'

当数据集很大时,很难找到有问题的值。

to_numeric()解决这个问题的最好方法吗?

ddf = dd.read_csv("people.csv", dtype={"first_name": "object", "age": "object"})
ddf["age"] = dd.to_numeric(ddf["age"], errors='coerce')
print(ddf.compute())

  first_name   age
0        bob  34.0
1       mary  10.0
2        kat   NaN

这是解决此问题的最佳方法吗?

标签: daskdask-dataframe

解决方案


推荐阅读