我的数据集(称为“火车”)与抵押申请有关。为了改善对“已接受”(0/1)的预测,我试图计算“贷款方接受比率”,并希望将该新列追加到我的数据集中。
数据集有50万行,出借方ID在0到6508之间变化,但实际上并不是所有的ID(整数)都存在。
我尝试过:
方法1: 创建数据透视表。这有效:
train.pivot_table(index=['lender'], aggfunc='mean', values=['accepted'])
但是:我似乎无法将此数据透视表的结果添加到我的数据集中:
不是直接在一行代码中。
不是间接的,方法是将此数据透视表的结果添加到一个空的数据框中,然后与“ on = lender_id”合并。
方法2: 使用groupby函数创建一个新列。我用了这个:
train['lender_ar'] = train.groupby('lender').transform('mean')
,但正在获取:
ValueError: Wrong number of items passed 21, placement implies 1
我的一些数据集:
lender accepted
4536 1
2458 0
5710 1
5888 1
289 1
我希望有人能提供帮助!谢谢!
答案 0 :(得分:0)
我会尝试使用df.join
作为原始数据集,并且平均值将不会具有相同的维度。
train.join(train.groupby('lender').mean(), on='lender')