使用 pandas 的 fillna() 输入 NaN 将 dtype 从 float 更改为 object
Imputing NaNs using pandas's fillna() changes the dtype from float to object
所以我正在为缺失值估算我的一些列。这些列是数字数据类型(浮点数和整数)
一旦我使用 fillna() 和均值等来估算缺失值,列的 dtype 就会从 float 更改为 object。
我希望它保持浮动。并发现重做所有 dtypes 有点低效。
请帮我解决这个问题。
这是一个例子。
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))
After imputation, the dtype is dtype('O')
请注意,这只是我在此处创建的示例。我正在处理一个大型数据集,并计划用不同的插补来插补多个列。因此,请提出有助于一次处理多列的解决方案。
P.S。我发现部署 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() 和均值等来估算缺失值,列的 dtype 就会从 float 更改为 object。 我希望它保持浮动。并发现重做所有 dtypes 有点低效。 请帮我解决这个问题。
这是一个例子。
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))
After imputation, the dtype is dtype('O')
请注意,这只是我在此处创建的示例。我正在处理一个大型数据集,并计划用不同的插补来插补多个列。因此,请提出有助于一次处理多列的解决方案。
P.S。我发现部署 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')