如何提取员工在熊猫轮班期间所做的第一个条目和最后一个条目

我有一个csv,需要在其中将每个员工的第一个和最后一个每日条目保存在一个新文件中。他们中有些人可能会上夜班,所以我不知道如何将这三个班次包括在内(7:00 – 15:30、23:00-7:30、15:00-23:30)并过滤掉从第一次进入到最后一次离开之间的休息时间

Basically what I have is:     


    3/4/2020 8:29   Ali             
    3/4/2020 8:35   Vlad
    3/4/2020 11:47  Vlad
    3/4/2020 11:47  Vlad
    3/4/2020 11:49  Ali
    3/4/2020 13:44  Vlad
    3/4/2020 11:49  Ali
    3/4/2020 14:15  Vlad
    3/4/2020 17:20  Ali
    3/4/2020 17:54  Vlad
    3/4/2020 23:01  Dan
    3/5/2020 02:01  Dan
    3/5/2020 02:10  Dan
    3/5/2020 06:21  Dan
    3/5/2020 06:43  Dan
    3/5/2020 07:41  Dan
    3/5/2020 07:20  Ali




And what I need is:



    3/4/2020 8:29   Ali     
    3/4/2020 17:20  Ali
    3/4/2020 8:35   Vlad
    3/4/2020 17:54  Vlad
    3/4/2020 23:01  Dan
    3/5/2020 07:20  Dan
评论
空白式
空白式
df_bydate = df.sort_values(by='DateTime',ascending=True)

df_grouped = df_bydate.groupby('DateTime')['Employee'].apply(list)

Ali_first = df_grouped["Ali"].values[0]
Ali_last = df_grouped["Ali"].values[-1] 

我没有机会尝试,但是也许可以解决您的问题。在这里,我们首先按日期对表格进行排序,然后使用groupby方法获取与分组员工相关的日期,因此每一列现在都是员工,每一行都是日期。并且由于如果您获得列的第一个元素,日期也会被排序,因此您将访问该员工发布的第一个日期。 不必担心夜班,因为按日期时间排序应按时间顺序对其进行排序。

点赞
评论