使用dtypes的read_csv,但列中没有值

时间:2018-08-24 10:14:13

标签: python pandas csv dataframe

我通过指定每个col的类型,使用以下代码读取csv:

clean_pdf_type=pd.read_csv('table_updated.csv',usecols=col_names,dtype =col_types)

但是有错误:

ValueError: Integer column has NA values in column 298 

不确定如何跳过不适用吗?

2 个答案:

答案 0 :(得分:2)

clean_pdf_type=pd.read_csv('table_updated.csv',usecols=col_names)
clean_pdf_type = (clean_pdf_type.fillna(0)).astype(col_types)

如评论中所述,不要指定类型,删除NA,然后强制转换为特定类型

答案 1 :(得分:2)

Pandas v0.24 +

请参见NumPy or Pandas: Keeping array type as integer while having a NaN value

Pandas v0.24之前的版本

NaN dtype系列中不能有int个值。这是不可避免的,因为NaN的值被认为是float

import numpy as np
type(np.nan)  # float

您最好的选择是将这些列读为float。如果随后您可以用诸如NaN0之类的填充值替换-1值,则可以进行相应处理并转换为int

int_cols = ['col1', 'col2', 'col3']
df[int_cols] = df[int_cols].fillna(-1)
df[int_cols] = df[int_cols].apply(pd.to_numeric, downcast='integer')

混合使用intfloat值的替代方法将导致一系列dtype object。不推荐。