我想计算两个datetime
对象之间的经过时间,但是在某种程度上,我考虑了预编程的空闲时间,例如:
WHEN IDLE TIME
0 Weekdays 12:00 to 13:00
1 Mon-Thu 18:00 to 8:00 following day
2 Fri 17:00 to 8:00 following Monday/working day
3 Holidays 18:00 previous day to 8:00 next working day
使用一个示例,让我们来做
In [1]: beginning = datetime(2019, 12, 11, 19, 21)
In [2]: end = datetime(2019, 12, 22, 14, 34)
In [3]: elapsed = end - beginning
In [4]: '{} days, {} hours, {} min, {} sec'.format(elapsed.days,
...: elapsed.seconds // 3600,
...: (elapsed.seconds // 60) % 60,
...: elapsed.seconds % 60)
Out[4]: '10 days, 19 hours, 13 min, 0 sec'
但是,我需要找到一种不考虑以下因素的计算方法:
beginning
至8:00之间的所有时间(因为开始时间是18:00之后); end
是星期五的17:00之后)所以我的timedelta对象将返回(如果我的计算正确):
Out[5]: '4 days, 22 hours, 0 min, 0 sec'
我能做到的一种方法是迭代beginning
的timedelta,并相应地进行每个子句检查和计算。但是我期待在600,000行的DataFrame上使用这样的算法,因此我需要使其效率更高。 Python中有没有一种方法可以有效地对这些“时间跳跃”进行编程?