我只想修改数据框中的数值变量,即按中位数估算数值变量的缺失值,按众数估算因子变量的缺失值。为了仅修改数字变量,我尝试了以下操作:
xTrain.select_dtypes(include=numerics) = xTrain.select_dtypes(include=numerics).fillna(xTrain.mean(), inplace=True)
但是它说:
SyntaxError: can't assign to function call
事实上,这个解决方案刚刚奏效,但我对此并不满意,因为它不涉及赋值操作('=')。此外,这是一个“私有(private)方法”(即一个实现细节),将来可能会发生变化或完全删除。 answer here 建议谨慎使用:
xTrain._get_numeric_data().fillna(xTrain.mean(), inplace=True)
是否有其他方法可以只选择数字列并将它们归入整个数据,这意味着只修改数据框的一部分?提前致谢!
最佳答案
您可以使用 DataFrame.select_dtypes
获取所有列, 所以分配 working nice:
xTrain = pd.DataFrame({'address':['a', 'b', 'c'],'b':[1,2, np.nan]})
print (xTrain)
address b
0 a 1.0
1 b 2.0
2 c NaN
cols = xTrain.select_dtypes(include=np.number).columns
xTrain[cols] = xTrain[cols].fillna(xTrain.mean())
print (xTrain)
address b
0 a 1.0
1 b 2.0
2 c 1.5
关于python - 如何只修改数字变量python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56754588/