计算if:作业是否在某个时间间隔内

时间:2015-07-29 07:58:33

标签: python pandas

我有一个包含三列的数据框df1:

No.     Start Time          End Time
1       07/28/15 08:03 AM   07/28/15 08:09 AM
2       07/28/15 08:06 AM   07/28/15 08:12 AM

开始和结束时间表示某个作业的开始和结束时间。 我想构建一个新的数据框,用于计算特定日期某个时间的活动作业数。像这样:

Hours   Number of tasks
0:00    
0:01    
..  
..  
11:59   

此数据框应显示当天每分钟有多少作业处于活动状态。从8:03开始到8:09结束的工作应计入以下时间:(因为它在8:09结束,在8:09不再有效)

8:03
8:04
8:05
8:06
8:07
8:08

我应该如何以简单的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

不是大熊猫的解决方案,但你可以循环和过滤。
基于小时的快速示例:

import datetime

jobs = [
    (datetime.datetime(15, 7, 28, 8, 3), datetime.datetime(15, 7, 28, 8, 9)),
    (datetime.datetime(15, 7, 28, 8, 3), datetime.datetime(15, 7, 28, 8, 58)),
    (datetime.datetime(15, 7, 28, 8, 3), datetime.datetime(15, 7, 28, 10, 3)),
    (datetime.datetime(15, 7, 28, 8, 3), datetime.datetime(15, 7, 28, 9, 3)),
    (datetime.datetime(15, 7, 28, 10, 3), datetime.datetime(15, 7, 28, 8, 3)),
]
data = {'hours': [], 'active_jobs': []}
for hour in range(24):
    current__active_jobs = 0
    for job in jobs:
        if job[0].hour == hour:
            current__active_jobs += 1
        elif job[0].hour < hour and job[1].hour >= hour:
            current__active_jobs += 1
    data['hour'].append(hour)
    data['active_jobs'].append(current__active_jobs)

print DataFrame(data)