计算每个日期该员工的总工作时间(以熊猫为单位)

时间:2018-10-22 11:10:40

标签: python pandas

我有这样的熊猫数据框:

Employee_id  timestamp
   1        2017-06-21 04:47:45
   1        2017-06-21 04:48:45
   1        2017-06-21 04:49:45

对于每位员工,如果他/她在办公室,我每隔1分钟会收到一次ping。 我有大约2000名员工的ping命令,我需要这样的输出:

Employee_id    date           Total_work_hour
     1      2018-06-21               8
     1      2018-06-22               7
     2      2018-06-21               6
     2      2018-06-22               8

所有2000名员工

1 个答案:

答案 0 :(得分:3)

groupby和lambda函数用于403 - Forbidden的所有差异中的diff,然后将其total_seconds转换为秒,再除以sum数小时:

3600

但是,如果可能缺少一些连续的分钟,则可以使用自定义功能:

df1 = (df.groupby(['Employee_id', df['timestamp'].dt.date])['timestamp']
        .apply(lambda x: x.diff().sum())
        .dt.total_seconds()
        .div(3600)
        .reset_index(name='Total_work_hour'))
print (df1)
   Employee_id  timestamp  Total_work_hour
0            1 2017-06-21         0.033333