首页 > 解决方案 > 如何重用 df.groupby() 的结果。意味着在另一个数据框中填充NaN?

问题描述

我正在研究泰坦尼克号数据集

df['Age']根据“Sex”和“Pclass”计算平均值,以填充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()))

这工作正常,但现在,在测试集上,我想用训练集中按“性别”和“Pclass”分组的平均年龄值填充 NaN。 我可以通过 轻松获取值df.groupby(['Sex', 'Pclass'])['Age].mean(),但我不知道如何重用这些值来填充测试数据框中的 NaN。

谁能帮我?

标签: python-3.xpandasdataframepandas-groupby

解决方案


使用DataFrame.mergewith 左连接,然后用 with 替换缺失Series.fillnaDataFrame.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_'))

推荐阅读