我有这样的熊猫数据框:
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名员工
答案 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