python - read_csv 使用 dtypes 但列中有 na 值

标签 python pandas csv dataframe

<分区>

我使用以下代码通过指定每个列的类型来读取 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 

不确定如何跳过 NA?

最佳答案

Pandas v0.24+

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

Pandas pre-v0.24

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

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

最好的办法是将这些列读作 float。如果您随后能够将 NaN 值替换为填充值,例如 0-1,您可以相应地处理并转换为 整数:

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。不推荐。

关于python - read_csv 使用 dtypes 但列中有 na 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52002271/

相关文章:

pandas - 类型错误 : unhashable type: 'numpy.ndarray' - How to get data from data frame by querying radius from ball tree?

pandas - 将 Blob 存储文件读入 Azure ML Notebook 时遇到问题

Python:让urllib跳过失败的连接

python - DataFrame 可选 "condition"不过滤任何内容

python - 如何在超时的情况下动态导入不安全的 Python 模块?

python - 删除所有列中具有相同值的行

javascript - 使用 javascript 导出 CSV 时重音字母无法正确显示

python - 所有 csv 列之间通用

python:我怎么总是从csv的第二行开始?

python - pyqt treeview 索引错误删除最后一行