我使用以下代码通过指定每个列的类型来读取 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?
请参阅NumPy 或 Pandas:在具有 NaN 值时将数组类型保持为整数
dtype 系列中不能有NaN值int。这是不可避免的,因为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)
混合int和float值的替代方案将导致一系列 dtype object。不推荐。
| 归档时间: |
|
| 查看次数: |
12234 次 |
| 最近记录: |