我通过指定每个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
不确定如何跳过不适用吗?
答案 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)
请参见NumPy or Pandas: Keeping array type as integer while having a NaN value
在NaN
dtype系列中不能有int
个值。这是不可避免的,因为NaN
的值被认为是float
:
import numpy as np
type(np.nan) # float
您最好的选择是将这些列读为float
。如果随后您可以用诸如NaN
或0
之类的填充值替换-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')
混合使用int
和float
值的替代方法将导致一系列dtype object
。不推荐。