关于python:.mean()如何排除聚合函数中的NaN值?

How can .mean() exclude NaN values inside aggregate function?

我的数据集有很多列。这是两个:

1
2
3
4
5
6
Index  Graduated  Age
0      College    24
1      HighSch    18
2      College    26
3      College    Nan
4      HighSch    20

年龄的平均值很简单:

1
df.Age.mean()

但是,我还有许多其他列,因此我正在使用agg():

1
df.groupby('Graduated').agg({'Age':'mean'})

我得到的错误:

No numeric types to aggregate
If I insert a number instead of NaN, it works!!

如果列具有NaN值,agg()函数是否不允许我们运行均值?有办法解决吗?


正如@ayhan所说,Nan值看起来像字符串。一种可能的解决方案是,您可以使用以下两行之一用实际的Nan值替换您拥有的Nan字符串:

df['Age'] = df['Age'].replace(r'Nan', np.nan, regex=True)

@ayhan的建议是使用to_numeric方法。

df['Age'] = pd.to_numeric(df['Age'], errors='coerce')

然后执行您在问题中提到的聚合。而且,我将对所有列进行相同的操作,以避免造成混淆,并从一开始就将事情弄清楚,以备将来进行分析。