首页 > 解决方案 > 从列中选择的数值的平均值

问题描述

从年龄列中,我想选择(15 和 45 岁)之间的年龄组,然后用年龄组的平均值(15 和 45 岁)替换缺失值

[IN]: train['Age'].isnull().value_counts()
[OUT]:
False    714
True     177
Name: Age, dtype: int64

我该如何编写这段代码?

大多数解决方案都是指基于布尔的输出

train['Age'].fillna((train['Age'] > 15 & train['Age'] < 45).mean())

TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]

train['Age'].fillna((train['Age'] > 15 & train['Age'] < 45).mean())

年龄组分布在 1 到 80 岁之间 从年龄列我想选择(15 和 45 岁)之间的年龄组,然后用年龄组的平均值(15 和 45 岁)替换缺失值

标签: pythonpandasnumpymean

解决方案


添加括号和locAge

m = train.loc[(train['Age'] > 15) & (train['Age'] < 45), 'Age'].mean()

或使用Series.between

m = train.loc[train['Age'].between(15, 45, inclusive=False), 'Age'].mean()

最后替换缺失值:

train['Age'] = train['Age'].fillna(m)

推荐阅读