1

我有一个包含不同列的数据集:活动描述以及开始和结束的时间

    Activity    Start       End      In time
    Activity 1  10:44:26    15:02:24    
    Activity 2  15:22:42    13:52:54    
    Activity 3  14:41:57    16:03:48    
    Activity 4  11:16:08    13:37:16    
    Activity 5  15:49:39    08:51:18    
    Activity 6  19:36:37    15:19:26    
    Activity 7  14:47:33    19:39:29    
    Activity 8  15:40:52    19:30:26

我如何用这种条件填写 Pandas 的“及时”列:

  • 如果开始时间大于上午 8 点结束时间小于下午 5:30,则及时,否则不及时。

我尝试使用 datetime 模块 pd.between_time()... 我创建了自己的 def 但它不起作用。

我该如何解决我的问题?

4

1 回答 1

1

使用numpy.where

#if necessary convert to times
#df['Start'] = pd.to_datetime(df['Start']).dt.time
#df['End'] = pd.to_datetime(df['End']).dt.time

from datetime import time

mask = (df.Start > time(8,0,0) ) & (df.End  < time(17,30,0))

df['In time'] = np.where(mask, 'yes','no')
print (df)
    Activity     Start       End In time
0  Activity 1  10:44:26  15:02:24     yes
1  Activity 2  15:22:42  13:52:54     yes
2  Activity 3  14:41:57  16:03:48     yes
3  Activity 4  11:16:08  13:37:16     yes
4  Activity 5  15:49:39  08:51:18     yes
5  Activity 6  19:36:37  15:19:26     yes
6  Activity 7  14:47:33  19:39:29      no
7  Activity 8  15:40:52  19:30:26      no
于 2021-01-20T07:28:11.490 回答