首页 > 解决方案 > pandas groupby 并且只变换一列

问题描述

我想分组并仅转换其中一个分组列。

假设我有这样的数据框:

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')

然后我想分组并获得计数列的比例,datafG / datafG.groupby(level=[0]).transform('sum')但这会改变两者,我正在寻找一种方法来保持我的sum_n列不变。

这给了我一个看起来像这样的df:

                    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

虽然我想要:

                    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

标签: pythonpython-3.xpandas

解决方案


推荐阅读