Например, у меня есть df с nan, и я использую следующий метод для fillna.
import pandas as pd
a = [[2.0, 10, 4.2], ['b', 70, 0.03], ['x', ]]
df = pd.DataFrame(a)
print(df)
df.fillna(int(0),inplace=True)
print('fillna df\n',df)
dtype_df = df.dtypes.reset_index()
ВЫХОД:
0 1 2
0 2 10.0 4.20
1 b 70.0 0.03
2 x NaN NaN
fillna df
0 1 2
0 2 10.0 4.20
1 b 70.0 0.03
2 x 0.0 0.00
col type
0 0 object
1 1 float64
2 2 float64
На самом деле, я хочу, чтобы column 1 поддерживал тип int вместо float.
Мой желаемый результат:
fillna df
0 1 2
0 2 10 4.20
1 b 70 0.03
2 x 0 0.00
col type
0 0 object
1 1 int64
2 2 float64
Итак, как это сделать?
Спасибо, что указали на ошибку!






Попробуйте добавить downcast='infer' для понижения значений любых подходящих столбцов:
df.fillna(0, downcast='infer')
0 1 2
0 2 10 4.20
1 b 70 0.03
2 x 0 0.00
И соответствующие dtypes
0 object
1 int64
2 float64
dtype: object
У вас есть ошибка в последней строке вашего примера: вы явно использовали
fillna(0), а неffill(0).