我有一个擅长于员工的数据,没有。一个星期工作了几小时。我为每个员工标记了他/她正在从事的项目。通过执行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。>
如何从组中唯一的员工姓名中获取平均值?
答案 0 :(得分:1)
您可以尝试nunique
util_breakup_mean = util_breakup_sum/df.groupby("Tag")['employee'].nunique()
答案 1 :(得分:1)
尝试:
df.groupby("Tag")["Bill. Hours"].sum().div(df.groupby("Tag")["Employee"].nunique()
Employee
是标识员工的列。