在一个数据帧上,我使用了groupby
和mean
来创建下表:
代码:
df.groupby(['Pclass','Sex'])['Age'].mean()
结果:
Class Sex
1.0 female 36.893130
male 41.103490
2.0 female 27.499223
male 30.815380
3.0 female 22.185329
male 25.962264
现在,我要使用上表的结果从fillna
列(在主数据帧上的 )中获取[Age]
的值。
因此,如果一个人的年龄为NaN且该人处于2级且性别为男性,则应填写30.81
我当时正在考虑在if (df.loc[i, 'Pclass']==x) & (df.loc[i, 'Sex']=='female')
中使用类似for-loop
的代码,但是找不到一种很好的方法。
答案 0 :(得分:1)
尝试一下:-
df['Age'] = df.groupby(['Pclass','Sex']).Age.transform(lambda x: x.fillna(x.mean()))