我有一个数据库,看起来像这样:
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 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']})
发布于 2020-11-11 18:24:24
您可以使用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
发布于 2020-11-11 18:29:30
修复你的代码
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
https://stackoverflow.com/questions/64791988
复制相似问题