我有一种情况,我想使用训练集中的groupby
结果来填充测试集的结果
我认为在pandas中没有直接的方法可以做到这一点,所以我尝试在测试集中的列上使用apply
方法
我的处境:
我想使用我的MSZoning
列的平均值来推断我的LotFrontage
列缺少的值
如果我在训练集中使用groupby
方法,我会得到以下结果:
train.groupby('MSZoning')['LotFrontage'].agg(['mean', 'count'])
给予
现在,我想用这些值来填充test集合中缺少的值,所以我不能只使用transform
方法
相反,我创建了一个要传递到apply
方法中的函数,如下所示:
def fill_MSZoning(row):
if row['MSZoning'] == 'C':
return 69.7
elif row['MSZoning'] == 'FV':
return 59.49
elif row['MSZoning'] == 'RH':
return 58.92
elif row['MSZoning'] == 'RL':
return 74.68
else:
return 52.4
我这样调用函数:
test['LotFrontage'] = test.apply(lambda x: x.fillna(fill_MSZoning), axis=1)
现在,LotFrontage
列的结果与Id
列的结果相同,尽管我没有指定这一点
知道发生了什么吗
你可以这样做
填入组平均值
输出
相关问题 更多 >
编程相关推荐