0

I'd like to groupby and transform only one of the grouped columns.

Suppose I have dataframe like this:

dataf = pd.DataFrame({'question': ['q1', 'q1', 'q1', 'q2', 'q2', 'q2', 'q3', 'q3', 'q3']*10, 'value': [1,2,3,1,2,3,1,2,3]*10})
datafG = dataf.groupby(['question', 'value']).agg({'value': 'count'})
datafG['sum_n'] = datafG.groupby(['question']).transform('sum')

And then I want to groupby and get proportions of the count column datafG / datafG.groupby(level=[0]).transform('sum') this will however transform both, I am looking for a way to keep my sum_ncolumn as it is.

This gives me a df looking like this:

                    value   sum_n
question    value   
q1          1       0.33    0.33
q1          2       0.33    0.33
q1          3       0.33    0.33
q2          1       0.33    0.33
q2          2       0.33    0.33
q2          3       0.33    0.33
q3          1       0.33    0.33
q3          2       0.33    0.33
q3          3       0.33    0.33

While I want:

                    value   sum_n
question    value   
q1          1       0.33    30
q1          2       0.33    30
q1          3       0.33    30
q2          1       0.33    30
q2          2       0.33    30
q2          3       0.33    30
q3          1       0.33    30
q3          2       0.33    30
q3          3       0.33    30
honetkri
  • 67
  • 5

0 Answers0