-1

Given the following pandas dataframe:

        uid          field  value
0         0          Hello      5
1         2          Hello     15
2         0           Wave      2
3         1           Wave      8
4         3            Bye      6
5         1            Bye      4

I'd like to obtain the following dataframe:

        uid          field  value
0         0          Hello    .25  # 5/20
1         2          Hello    .75  # 15/20
2         0           Wave    .20  # 2/10
3         1           Wave    .80  # 8/10
4         3            Bye    .60  # 6/10
5         1            Bye    .40  # 4/10

1 Answers1

0

You can groupby and transform:

df['value'] = df.groupby('field')['value'].transform(lambda x:x/x.sum())
mozway
  • 194,879
  • 13
  • 39
  • 75