为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫:将列值乘以组的总和

熊猫:将列值乘以组的总和

沧海一幻觉 2023-02-07 16:40:05
我有一个看起来像这样的数据框:   a     b0  A  0.151  A  0.252  A  0.103  B  0.204  B  0.105  B  0.256  B  0.607  C  0.508  C  0.70我想添加一个“c”列,它将“b”的值乘以它在“a”列中所属的组的总和。所以,第一行应该是 0.15 * 0.5(A 组的总和)= 0.075。这将是“c”列的 excel 公式 =B1*SUMIF($A$1:$A$9,A1,$B$1:$B$9)结果数据框应如下所示:    a   b       c0   A   0.15    0.0751   A   0.25    0.1252   A   0.10    0.053   B   0.20    0.234   B   0.10    0.1155   B   0.25    0.28756   B   0.60    0.697   C   0.50    0.68   C   0.70    0.84
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

尝试 groupby + transform 然后相乘:


df['b'] * df.groupby('a')['b'].transform('sum')

#df['c'] = df['b'] * df.groupby('a')['b'].transform('sum')

0    0.0750

1    0.1250

2    0.0500

3    0.2300

4    0.1150

5    0.2875

6    0.6900

7    0.6000

8    0.8400

Name: b, dtype: float64


查看完整回答
反对 回复 2023-02-07
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

尝试新的reindex


df['c']=df.b*df.set_index('a').b.sum(level=0).reindex(df.a).values

df

   a     b       c

0  A  0.15  0.0750

1  A  0.25  0.1250

2  A  0.10  0.0500

3  B  0.20  0.2300

4  B  0.10  0.1150

5  B  0.25  0.2875

6  B  0.60  0.6900

7  C  0.50  0.6000

8  C  0.70  0.8400


查看完整回答
反对 回复 2023-02-07
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号