Я использовал следующий код для чтения csv, указав типы для каждого col:
clean_pdf_type=pd.read_csv('table_updated.csv',usecols=col_names,dtype =col_types)
Но у него есть ошибка:
ValueError: Integer column has NA values in column 298
Не знаете, как пропустить НС?
Вы не можете иметь значения NaN
в серии int
dtype. Это невозможно избежать, поскольку значения 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
. Это не рекомендуется.
clean_pdf_type=pd.read_csv('table_updated.csv',usecols=col_names)
clean_pdf_type = (clean_pdf_type.fillna(0)).astype(col_types)
Как сказано в комментариях, не указывайте тип, удалите NA, а затем переведите его в определенный тип
col_types
может быть определено несколько типов.