Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定重叠日期范围内时间块的最大并发性_Python_Pandas_Datetime_Overlap - Fatal编程技术网

Python 确定重叠日期范围内时间块的最大并发性

Python 确定重叠日期范围内时间块的最大并发性,python,pandas,datetime,overlap,Python,Pandas,Datetime,Overlap,我在一家医院工作,我们正在努力掌握手术室的使用情况。房间里的情况正在失去控制。我们让提供商同时执行多个并发过程,并同时管理多个居民。我需要弄清楚到底发生了多少。我读过几个解决方案,但它们似乎都是基于两个值而不是多个值,或者是求和 现有价值 首先要解决的问题是计算一个提供者在现实世界中工作的时间。 重叠的手术程序会让人觉得一个人一天24小时都在手术室,这显然是不可能的 多亏了我能计算出重叠时间 现在我需要知道一个提供者在一天内并发过程的最大数量是多少。 例如,如果琼斯医生早上8点开始,他们有自己的

我在一家医院工作,我们正在努力掌握手术室的使用情况。房间里的情况正在失去控制。我们让提供商同时执行多个并发过程,并同时管理多个居民。我需要弄清楚到底发生了多少。我读过几个解决方案,但它们似乎都是基于两个值而不是多个值,或者是求和 现有价值

首先要解决的问题是计算一个提供者在现实世界中工作的时间。 重叠的手术程序会让人觉得一个人一天24小时都在手术室,这显然是不可能的

多亏了我能计算出重叠时间

现在我需要知道一个提供者在一天内并发过程的最大数量是多少。 例如,如果琼斯医生早上8点开始,他们有自己的手术,但两名住院医生也需要帮助,那就是同时进行三次手术。但也许在一天的晚些时候,在不同的重叠时间段,会出现激增。现在琼斯博士在三个不同的手术室之间奔波,仍然管理着两个住院医生,这就增加到了五个并发手术

Valentino的解决方案将初始数据帧中的行按重叠时间分组:

null AN_DATE     AN_PROV_ID USER_ID PROV_NAME  AN_BEGIN_LOCAL_DTTM    AN_END_LOCAL_DTTM        MINS  group
2    2019-07-17         700   JB007   J. Bond  2019-07-17 08:00:00  2019-07-17 09:00:00    01:00:00      1
3    2019-07-17         700   JB007   J. Bond  2019-07-17 08:00:00  2019-07-17 09:30:00    01:30:00      1
5    2019-07-17         700   JB007   J. Bond  2019-07-17 09:00:00  2019-07-17 10:15:00    01:15:00      1
6    2019-07-17         700   JB007   J. Bond  2019-07-17 13:00:00  2019-07-17 14:00:00    01:00:00      2
7    2019-07-17         700   JB007   J. Bond  2019-07-17 12:30:00  2019-07-17 13:30:00    01:00:00      2
要获取并发过程的数量,我可以使用用于计算组的相同合并数据帧吗?在可以进行这些计算时,合并的数据帧如下所示:

                 time  what  running  newwin  group
2 2019-07-17 08:00:00     1        1    True      1
3 2019-07-17 08:00:00     1        2   False      1
5 2019-07-17 09:00:00     1        3   False      1
2 2019-07-17 09:00:00    -1        2   False      1
3 2019-07-17 09:30:00    -1        1   False      1
5 2019-07-17 10:15:00    -1        0   False      1
7 2019-07-17 12:30:00     1        1    True      2
6 2019-07-17 13:00:00     1        2   False      2
7 2019-07-17 13:30:00    -1        1   False      2
6 2019-07-17 14:00:00    -1        0   False      2
起初我以为我可以简单地数一数每组的1个。但这实际上并不是并发。在下面的示例中,由于过程重叠,时间段正确合并为上午8点的开始时间和上午10:15的结束时间,但该时间段的最大并发过程数为2:

       8am    9am    10am
proc1  ########
proc2  ############
proc3           ###########
对于下面的块,最大并发数为3:

       8am    9am    10am
proc1  ########
proc2  ############
proc3        ######
proc4           ###########
proc5                 ##  
看起来我应该能够使用pandas.Interval.overlaps,但这仍然有效 两次间隔。我将有1到x个间隔。因此,导致
我来考虑一下。但我实际上没有一个值得比较的价值。事实上,我找到的每个解要么对两个值起作用,要么对一个已经存在的值求和。那么,我会得到Interval.overlaps的最大值吗?这似乎太抽象了。我对这一点太陌生了,我不明白这些部分是如何结合在一起的,所以我很欣赏任何见解。

如果开始时间和结束时间重合,比如在第一种情况下,proc1在9结束,proc2在9开始,那么并发性将计为2,还是将时间四舍五入到1分钟。换句话说,8:59:59秒算作8:59,9:00:01算作上午9:00。是的,我的理解是,一个在上午9点结束的过程和一个在上午9点开始的过程是并行的。谢谢。在这种情况下-您可以通过查看您显示的
running
列的
max
获得最大并发性-cummax似乎没有必要谢谢您,Asish,我将尝试一下!那确实管用!谢谢你的提示。我不能接受,因为这不是答案。