为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_花开花谢_0 2023-12-20 10:24:32
我有一个数据框,其中包含有关谁在工作、执行哪个任务以及他/她开始工作的时间的“日志”信息: 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"]),但我不知道如何应用时间条件来将每一行与其余行进行比较。希望你能帮助我,提前谢谢你
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

对于时差的计算,这可能会对您有所帮助。但是,您还需要根据重复案例应用您的条件。


# 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    nan

6  6  2000-01-02 00:04:30  Bob   Conrad   2  Maintenance   1440

1  1  2000-01-01 00:04:30  John  Fischer  1  Development   1440

0  0  2000-01-01 00:00:00  John  Fischer  1  Maintenance      4.5

4  4  2000-01-01 00:09:30  John  Fischer  1  Maintenance      9.5

5  5  2000-01-01 00:15:30  John  Fischer  1  Maintenance      6

3  3  2000-01-01 00:10:00  Mary  Smith    3  Multitasking     5.5

7  7  2000-01-02 00:10:00  Mary  Smith    3  Multitasking  1440


查看完整回答
反对 回复 2023-12-20
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信