2 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
嘗試 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

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
嘗試新的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
添加回答
舉報(bào)