首页 > 解决方案 > 如何只修改数字变量python

问题描述

我只想修改数据框中的数字变量,即按中位数估算数字变量的缺失值,按模式估算因子变量的缺失值。要仅修改数字变量,我尝试了以下操作:

xTrain.select_dtypes(include=numerics) =  xTrain.select_dtypes(include=numerics).fillna(xTrain.mean(), inplace=True)

但它说:

SyntaxError:无法分配给函数调用

事实上,这个解决方案很有效,但我对它不满意,因为它不涉及赋值操作('=')。此外,这是一种“私有方法”(即实现细节),将来可能会发生变化或完全删除。建议通过此处的回答谨慎使用:

xTrain._get_numeric_data().fillna(xTrain.mean(), inplace=True)

是否在考虑是否有其他方法可以仅选择数字列并将它们归入整个数据,这意味着仅修改数据框的一部分?提前致谢!

标签: pythonpandasmachine-learningdata-science

解决方案


您可以使用 获得所有列DataFrame.select_dtypes,因此分配工作得很好:

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

推荐阅读