我有一个看起来像这样的数据库:
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']})
答案 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