计算总和,然后按行计算总和的百分比

时间:2020-11-11 18:20:32

标签: python pandas

我有一个看起来像这样的数据库:

STAFF  Position_Group FTE
BOB     APP           1.0
Mike    APP           0.5
Ken     APP           0.8
Liz     APP           0.7
Sally   APP           0.6

总计= 3.6

我要合计FTE列,然后将每个Staff成员除以合计,得到一个新的数据表,如下所示:

STAFF  Position_Group  FTE  %_Total_FTE
BOB     APP            1.0  .27
Mike    APP            0.5  .14
Ken     APP            0.8  .22
Liz     APP            0.7  .19
Sally   APP            0.6  .16

我知道如何通过此操作对FTE列进行总计,但是我不确定如何将其应用于计算%列。

Master_PG_ROC_CFTE = Master_PG_ROC_v1.groupby(['Position_Group']).agg({'FTE': ['sum']})

2 个答案:

答案 0 :(得分:1)

您可以使用groupby().transform()在各行之间传播总和:

df['%Total_FTE'] = df['FTE'] / df.groupby('Position_Group')['FTE'].transform('sum')

输出:

   STAFF Position_Group  FTE  %Total_FTE
0    BOB            APP  1.0    0.277778
1   Mike            APP  0.5    0.138889
2    Ken            APP  0.8    0.222222
3    Liz            APP  0.7    0.194444
4  Sally            APP  0.6    0.166667

答案 1 :(得分:1)

修正您的代码

Master_PG_ROC_CFTE = Master_PG_ROC_v1.groupby(['Position_Group'])['FTE'].sum()

Master_PG_ROC_v1['%Total_FTE'] = Master_PG_ROC_v1['FTE'] / Master_PG_ROC_CFTE.reindex(Master_PG_ROC_v1['Position_Group']).values