read_csv 使用 dtypes 但列中有 na 值

9 python csv dataframe pandas

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

clean_pdf_type=pd.read_csv('table_updated.csv',usecols=col_names,dtype =col_types)
Run Code Online (Sandbox Code Playgroud)

但它有错误:

ValueError: Integer column has NA values in column 298 
Run Code Online (Sandbox Code Playgroud)

不确定如何跳过 NA?

jpp*_*jpp 9

熊猫 v0.24+

请参阅NumPy 或 Pandas:在具有 NaN 值时将数组类型保持为整数

熊猫 v0.24 之前的版本

dtype 系列中不能有NaNint。这是不可避免的,因为NaN值被考虑float

import numpy as np
type(np.nan)  # float
Run Code Online (Sandbox Code Playgroud)

最好的办法是阅读这些列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')
Run Code Online (Sandbox Code Playgroud)

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


归档时间:

查看次数:

12234 次

最近记录:

6 年,8 月 前