我正在处理Titanic数据集。
我计算df['Age']
基于'Sex'和'Pclass'的均值,以将NaN填充到中df['Age']
。
代码如下:
import pandas as pd
df = pd.read_csv('train.csv')
df['Age'] = df.groupby(['Sex','Pclass'])['Age'].transform(lambda x:x.fillna(x.mean()))
这很好用,但是现在,在测试集上,我想用训练集中“ Sex”和“ Pclass”分组的平均年龄值填充NaNs。我可以通过轻松获得这些值df.groupby(['Sex', 'Pclass'])['Age].mean()
,但是我无法弄清楚如何重用这些值来填充测试数据帧中的NaN。
谁能帮我?
使用DataFrame.merge
与左连接,然后通过替换缺失值Series.fillna
有DataFrame.pop
:
mean = df1.groupby(['Sex', 'Pclass'], as_index=False)['Age'].mean()
df2 = df2.merge(mean, on=['Sex','Pclass'], how='left', suffixes=('','_'))
df2['Age'] = df2['Age'].fillna(df2.pop('Age_'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句