pandas算加权平均值_Pandas数据帧中多列的加权平均数

更一般的解决方案:

1.它为没有Student,Class的所有列创建加权平均值:df2 = df.drop('Student', axis=1) \

.groupby('Class') \

.apply(lambda x: x.drop(['Class', 'wb'], axis=1).mul(x.wb, 0).sum() / (x.wb).sum()) \

.add_suffix('_M') \

.reset_index()

print (df2)

Class V1_M V2_M V3_M

0 A 9.526316 9.157895 10.684211

1 B 3.900000 7.700000 7.900000

2 C 5.428571 2.857143 3.000000

3 D 5.631579 3.473684 5.526316

也可以为加权平均值定义列:

^{pr2}$

更一般的方法是按^{}过滤所有以V开头的列:df2 = df.groupby('Class') \

.apply(lambda x: x.filter(regex='^V').mul(x.wb, 0).sum() / (x.wb).sum()) \

.add_suffix('_M') \

.reset_index()

print (df2)

Class V1_M V2_M V3_M

0 A 9.526316 9.157895 10.684211

1 B 3.900000 7.700000 7.900000

2 C 5.428571 2.857143 3.000000

3 D 5.631579 3.473684 5.526316

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值