如果时间戳关闭则删除重复项

我有一个数据框,其中包含有关谁在工作、执行哪个任务以及他/她开始工作的时间的“日志”信息:


 index |    Entrance time   | Name | Last name | Employee_ID  | Task

 --------------------------------------------------------------------

   0   |2000-01-01 00:00:00 | John |  Fischer  |    001       | Maintenance

   1   |2000-01-01 00:04:30 | John |  Fischer  |    001       | Development

   2   |2000-01-01 00:04:30 | Bob  |  Conrad   |    002       | Maintenance

   3   |2000-01-01 00:10:00 | Mary |  Smith    |    003       | Multitasking

   4   |2000-01-01 00:09:30 | John |  Fischer  |    001       | Maintenance

   5   |2000-01-01 00:15:30 | John |  Fischer  |    001       | Maintenance

   6   |2000-01-02 00:04:30 | Bob  |  Conrad   |    002       | Maintenance

   7   |2000-01-02 00:10:00 | Mary |  Smith    |    003       | Multitasking

然后,如果我们正在查找的任务和其他任务之间的进入时间差小于 10 分钟,并且任务和名称相同,我想消除重复项。所以生成的数据框应该是:


 index |    Entrance time   | Name | Last name | Employee_ID  | Task

 --------------------------------------------------------------------

   0   |2000-01-01 00:00:00 | John |  Fischer  |    001       | Maintenance

   1   |2000-01-01 00:04:30 | John |  Fischer  |    001       | Development

   2   |2000-01-01 00:04:30 | Bob  |  Conrad   |    002       | Maintenance

   3   |2000-01-01 00:10:00 | Mary |  Smith    |    003       | Multitasking

   5   |2000-01-01 00:15:30 | John |  Fischer  |    001       | Maintenance

   6   |2000-01-02 00:04:30 | Bob  |  Conrad   |    002       | Maintenance

   7   |2000-01-02 00:10:00 | Mary |  Smith    |    003       | Multitasking

我使用过drop_duplicates(subset=["Name", "Last name", "Task"]),但我不知道如何应用时间条件来将每一行与其余行进行比较。


希望你能帮助我,提前谢谢你


qq_花开花谢_0
浏览 55回答 1
1回答

芜湖不芜

对于时差的计算,这可能会对您有所帮助。但是,您还需要根据重复案例应用您的条件。# Make df sequential in ["Name", "Last name", "Task"]df.sort_values(["Name", "Last name", "Task"], inplace=True)# Compute time difference temp = df['Entrance time'] - df['Entrance time'].shift()# converts the difference in terms of minutes (taking into account absolute values)df['diff_mins'] = temp.abs() /np.timedelta64(1,'m')输出:2  2  2000-01-01 00:04:30  Bob   Conrad   2  Maintenance    nan6  6  2000-01-02 00:04:30  Bob   Conrad   2  Maintenance   14401  1  2000-01-01 00:04:30  John  Fischer  1  Development   14400  0  2000-01-01 00:00:00  John  Fischer  1  Maintenance      4.54  4  2000-01-01 00:09:30  John  Fischer  1  Maintenance      9.55  5  2000-01-01 00:15:30  John  Fischer  1  Maintenance      63  3  2000-01-01 00:10:00  Mary  Smith    3  Multitasking     5.57  7  2000-01-02 00:10:00  Mary  Smith    3  Multitasking  1440
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python