np.NaN
- это только плавающая точка, поэтому его необходимо удалить, чтобы создать целое число pd.Series. Предложение предложения Jeon отлично. Если 0 - недопустимое значение в df['b']
. Например:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, 5, 5], 'b': [np.NaN, 7200.0, 580.0], 'c': [3, 20, 20]})
print(df, '\n\n')
df['b'] = np.nan_to_num(df['b']).astype(int)
print(df)
при наличии уважительных 0, то вы могли бы сначала заменить их все с каким-то уникальным значением (например, -999999999), то преобразование выше, а затем заменить эти уникальные значения с 0-х.
В любом случае, вы должны помнить, что у вас есть 0, где были когда-то NaNs. Вам нужно быть осторожным, чтобы отфильтровать их при выполнении различных численных анализов (например, средних и т. Д.).
Могу ли я спросить, почему? Выглядит уродливо? целочисленный массив не может иметь 'NaN' – Jeon
Я вас понимаю, поэтому я должен сначала заменить NaN на 0, а затем преобразовать столбец в int? – billboard
Если вы действительно хотите, 0, -1 или что-то, что вы можете отличить – Jeon