我有一个看起来像这样的数据框: 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

慕桂英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
添加回答
举报
0/150
提交
取消