如何在Pandas中为同一类别的每条记录添加平均值?

问题描述 投票:1回答:1

我有一个数据框架,我将用来训练一个模型,我希望添加一个新的特征,以摆脱一个分类特征。

我有一列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() 来获取每个类的均值,但我怎样才能在不写整个函数的情况下,以一种优雅的方式添加列,使每个条目都是其类的均值?

python pandas pandas-groupby
1个回答
1
投票

IIUC,你需要 groupby.transformmean

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
© www.soinside.com 2019 - 2024. All rights reserved.