Python DateTime In和DateTime Out-关于时间窗口的计算

时间:2019-09-19 22:16:12

标签: python date dataframe time

我有一个包含两个DateTime Object列的数据框(一个代表正在计时的手术,另一个代表正在计时的手术)。对于每一行(即案例),我需要在工作时间(07:00-17:30)内创建一列总时间,并在工作时间之外创建另一列总时间。我不确定最好的方法。

我的数据框的可复制段:

    Actual Room In DateTime Actual Room Out DateTime
0   2013-11-01 02:16    2013-11-01 04:35
1   2016-06-10 16:42    2016-06-10 19:28
2   2014-12-13 09:15    2014-12-13 10:55
3   2014-01-03 19:46    2014-01-03 22:54
4   2015-01-12 18:13    2015-01-12 19:58
5   2017-03-24 18:55    2017-03-24 19:57
6   2015-08-07 18:46    2015-08-07 19:42
7   2016-03-18 20:43    2016-03-19 00:40
8   2017-02-23 15:21    2017-02-23 17:35
9   2013-11-29 17:08    2013-11-29 17:42
10  2014-05-28 18:17    2014-05-28 19:12
11  2017-07-15 17:04    2017-07-15 18:19
12  2017-02-16 09:14    2017-02-16 21:29
13  2014-07-11 12:04    2014-07-11 17:40
14  2017-07-05 12:27    2017-07-05 20:08
15  2014-08-18 17:55    2014-08-18 19:50
16  2015-01-23 15:41    2015-01-23 19:41
17  2015-01-12 16:59    2015-01-12 17:49
18  2014-02-23 11:24    2014-02-23 15:06
19  2017-09-21 13:40    2017-09-21 18:11

pd.read_clipboard(sep=',')

两列之间的最长时间为:

df['Room Difference'] = df['Actual Room Out DateTime'] - df['Actual Room In DateTime']
max(df['Room Difference'])
Timedelta('1 days 01:17:00')

这可以帮助我考虑问题和要编写的算法。

我想它会变成这样(作为伪代码):

if 00:00:00 <= 'Actual Room In DateTime' < 07:00:00 and 00:00:00 <= 'Actual Room Out DateTime' < 07:00:00:
     'After-hours' = 'Actual Room Out DateTime' - 'Actual Room In DateTime'
... to cover all the possible cases.

对于这种确切的问题,有没有更简单的方法或某种框架/工具?

1 个答案:

答案 0 :(得分:0)

从“业务开始时间”中减去时间,以在开始工作前的几个小时之外获取时间

从业务结束时间中减去出站时间,以在工作日结束后获得空闲时间

从外出时间中减去时间,以获得手术的总时间

将两个非工作时间相加,以得出总的非工作时间

从总工时中减去总的非工作时间,以在工作时间内得到总工数

为每次计算单独创建一列