2

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?

Amir
  • 978
  • 1
  • 9
  • 26

0 Answers0