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_n
column 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