我有一个数据框架,我将用来训练一个模型,我希望添加一个新的特征,以摆脱一个分类特征。
我有一列zip_reg是分类的,包含了大约106个不同的值,我的数据集有大约15万条记录,另一方面,我有一个数字特征 "金额",我希望计算同一类别的每条记录的平均值,下面是一个例子。
zip_reg amount
A 100
B 200
B 100
C 100
C 150
C 150
对于A类,我们的平均数是100,对于B类,我们的平均数是(3002=150),而对于C类,我们的平均数是200,我希望添加一个新的列mean_amount来计算同一类别的每条记录的平均数,即:
zip_reg amount mean_amount
A 100 100
B 200 150
B 100 150
C 100 200
C 150 200
C 150 200
即: groupby.mean()
来获取每个类的均值,但我怎样才能在不写整个函数的情况下,以一种优雅的方式添加列,使每个条目都是其类的均值?
IIUC,你需要 groupby.transform
与 mean
df['mean_amount'] = df.groupby('zip_reg')['amount'].transform('mean')
print (df)
zip_reg amount mean_amount
0 A 100 100.000000
1 B 200 150.000000
2 B 100 150.000000
3 C 100 133.333333
4 C 150 133.333333
5 C 150 133.333333