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

我有一个看起来像这样的数据框:


   a     b

0  A  0.15

1  A  0.25

2  A  0.10

3  B  0.20

4  B  0.10

5  B  0.25

6  B  0.60

7  C  0.50

8  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       c

0   A   0.15    0.075

1   A   0.25    0.125

2   A   0.10    0.05

3   B   0.20    0.23

4   B   0.10    0.115

5   B   0.25    0.2875

6   B   0.60    0.69

7   C   0.50    0.6

8   C   0.70    0.84


沧海一幻觉
浏览 114回答 2
2回答

一只名叫tom的猫

尝试 groupby + transform 然后相乘:df['b'] * df.groupby('a')['b'].transform('sum')#df['c'] = df['b'] * df.groupby('a')['b'].transform('sum')0    0.07501    0.12502    0.05003    0.23004    0.11505    0.28756    0.69007    0.60008    0.8400Name: b, dtype: float64

慕桂英4014372

尝试新的reindexdf['c']=df.b*df.set_index('a').b.sum(level=0).reindex(df.a).valuesdf   a     b       c0  A  0.15  0.07501  A  0.25  0.12502  A  0.10  0.05003  B  0.20  0.23004  B  0.10  0.11505  B  0.25  0.28756  B  0.60  0.69007  C  0.50  0.60008  C  0.70  0.8400
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python