使用 pandas 的 fillna() 插补 NaN 将 dtype 从浮点数更改为对象



所以我要为缺失的值输入我的一些列。列为数值型(float和integer)。一旦我使用fillna()和mean等来计算缺失的值,列的dtype就从float更改为object。我想让它保持浮动状态。我发现重做所有的dtype有点低效。请帮我一下。

下面是一个例子。

ser_original = pd.Series([1.0, 2.0, np.nan, 4.0, 5.0], dtype=float)
ser_imputed = ser_original.fillna(np.mean)
print('After imputation, the dtype is {}'.format(ser_imputed.dtype))

代入后,dtype为dtype('O')

请注意,这只是我在这里创建的一个示例。我正在使用大型数据集,并计划用不同的imputation来推算多列。因此,请建议解决方案,帮助处理多个列一次。

注:我发现部署for循环有点幼稚。如果我说错了,请评论。

这是因为您使用的是函数而不是值

ser_original = pd.Series([1.0, 2.0, np.nan, 4.0, 5.0], dtype=float)
ser_imputed = ser_original.fillna(np.mean)
print(ser_imputed)
0                                      1.0
1                                      2.0
2    <function mean at 0x000002BCA05020D0>
3                                      4.0
4                                      5.0
dtype: object

用平均值代替,效果很好

ser_imputed = ser_original.fillna(ser_original.mean())
print(ser_imputed)
0    1.0
1    2.0
2    3.0
3    4.0
4    5.0
dtype: float64
print(ser_imputed.dtype)
# dtype('float64')

如果您有一个数据帧,您可以通过使用fillna()作为

在其中填充nan
df.fillna(df.mean())

,其中每一列的NaN将被该列的平均值所取代。

相关内容

最新更新