.mean()如何排除聚合函数内的NaN值?

时间:2017-07-17 00:04:49

标签: python pandas dataframe

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

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

年龄的平均值很简单:

df.Age.mean()

但是,我还有很多其他列,因此我使用的是agg():

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

我得到的错误:

  

无需汇总的数字类型   如果我插入一个数字而不是NaN,它就可以了!!

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

1 个答案:

答案 0 :(得分:2)

正如@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')

然后执行您在问题中提到的聚合。我会对所有列做同样的事情,以避免混淆,并从一开始就直接进行分析,以便将来进行分析。