我的数据集有很多列。这是两个:
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()函数是否允许我们运行均值?有没有解决方法?
答案 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')
然后执行您在问题中提到的聚合。我会对所有列做同样的事情,以避免混淆,并从一开始就直接进行分析,以便将来进行分析。