Pandas组总和除以组中的唯一项

2024-09-29 19:32:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份excel中的员工数据和一周工作的小时数。我将每个员工标记为他/她正在从事的项目。我可以通过执行以下groupby操作来获得每个项目的总工作小时数:

util_breakup_sum = df[["Tag", "Bill. Hours"]].groupby("Tag").sum()
    Bill. Hours
Tag                 
A61H           92.00
A63B          139.75
An             27.00
B32B           33.50
H              37.00
Manager         8.00
PP             23.00
RP0117         38.50
Se             37.50

然而,当我试图计算每个人在每个项目上花费的平均时间时,它会给我(按员工列出的条目总数/总数),而正确的平均值应该是(组中的唯一员工总数/唯一员工)。 平均值示例如下所示:

util_breakup_mean = df[["Tag", "Bill. Hours"]].groupby("Tag").mean()
     Bill. Hours
Tag                 
A61H        2.243902
A63B        1.486702
An          1.000000
B32B        0.712766
H           2.055556
Manager     0.296296
PP          1.095238
RP0117      1.425926
Se          3.750000  

例如,A61H组只有两名员工,因此平均值应为(92/2)=46。但是,代码除以这些员工的总条目数,因此平均值为2.24

如何从组中唯一的员工姓名中获取平均值


Tags: 项目dftagutil员工平均值sumgroupby
2条回答

尝试:

df.groupby("Tag")["Bill. Hours"].sum().div(df.groupby("Tag")["Employee"].nunique()

其中Employee是标识员工的列

你可以试试nunique

util_breakup_mean = util_breakup_sum/df.groupby("Tag")['employee'].nunique()

相关问题 更多 >

    热门问题