My dataframe looks like this:
df = pd.DataFrame({'x':list('aaaaabbb'), 'y':np.random.randint(100,200,8),'z': np.random.randint(1000,2000,8)})
x y z
0 a 147 1279
1 a 183 1233
2 a 138 1154
3 a 153 1030
4 a 176 1683
5 b 124 1158
6 b 115 1748
7 b 149 1892
I want to add weighted average for each label in a new column in this dataframe.
I tried this:
df['wa'] = df.groupby('x')['y'].transform(np.average, weights = df.z)
but it didn`t work. Can anyone help me?