熊猫分组总和除以分组中的唯一项

时间:2020-06-27 14:10:52

标签: python excel pandas dataframe pandas-groupby

我有一个擅长于员工的数据,没有。一个星期工作了几小时。我为每个员工标记了他/她正在从事的项目。通过执行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。

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

2 个答案:

答案 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是标识员工的列。