亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

熊貓:將列值乘以組的總和

熊貓:將列值乘以組的總和

滄海一幻覺 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 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號