创建事件标记

时间:2018-05-15 05:03:40

标签: python-3.x pandas events event-handling

我正在创建事件标志(即第一个事件,最后一个事件,其他事件(在第一个和最后一个事件之间)。事件发生在每个游戏中(即 gsm_id )。我创建了记录第一个事件(第一个事件)和最后一个事件(上一个事件)在两个不同的列中。您可以查看下表以获取更多详细信息。

 gsm_id eventdatetime   matchdatetime   PreviousEventTime   First Event Last Event
2462794 8/11/2017 18:46 8/11/2017 18:45 8/11/2017 18:45 8/11/2017 18:46 8/11/2017 20:09
2462794 8/11/2017 18:49 8/11/2017 18:45 8/11/2017 18:46 8/11/2017 18:46 8/11/2017 20:09
2462794 8/11/2017 19:13 8/11/2017 18:45 8/11/2017 18:49 8/11/2017 18:46 8/11/2017 20:09
2462794 8/11/2017 19:31 8/11/2017 18:45 8/11/2017 19:13 8/11/2017 18:46 8/11/2017 20:09
2462794 8/11/2017 19:40 8/11/2017 18:45 8/11/2017 19:31 8/11/2017 18:46 8/11/2017 20:09
2462794 8/11/2017 20:07 8/11/2017 18:45 8/11/2017 19:40 8/11/2017 18:46 8/11/2017 20:09
2462794 8/11/2017 20:09 8/11/2017 18:45 8/11/2017 20:07 8/11/2017 18:46 8/11/2017 20:09
2462795 8/12/2017 17:39 8/12/2017 16:30 8/12/2017 16:30 8/12/2017 17:39 8/12/2017 17:44
2462795 8/12/2017 17:44 8/12/2017 16:30 8/12/2017 17:39 8/12/2017 17:39 8/12/2017 17:44
2462796 8/12/2017 14:23 8/12/2017 14:00 8/12/2017 14:00 8/12/2017 14:23 8/12/2017 15:27
2462796 8/12/2017 14:38 8/12/2017 14:00 8/12/2017 14:23 8/12/2017 14:23 8/12/2017 15:27
2462796 8/12/2017 14:42 8/12/2017 14:00 8/12/2017 14:38 8/12/2017 14:23 8/12/2017 15:27
2462796 8/12/2017 15:08 8/12/2017 14:00 8/12/2017 14:42 8/12/2017 14:23 8/12/2017 15:27
2462796 8/12/2017 15:27 8/12/2017 14:00 8/12/2017 15:08 8/12/2017 14:23 8/12/2017 15:27
2462797 8/12/2017 14:22 8/12/2017 14:00 8/12/2017 14:00 8/12/2017 14:22 8/12/2017 15:17
2462797 8/12/2017 14:25 8/12/2017 14:00 8/12/2017 14:22 8/12/2017 14:22 8/12/2017 15:17
2462797 8/12/2017 15:17 8/12/2017 14:00 8/12/2017 14:25 8/12/2017 14:22 8/12/2017 15:17

可以从谷歌硬盘下载数据,如下所示:

[https://drive.google.com/open?id=1KPu8MBBd2X9tsV0sjMQQVQq4k9s5BYVs][1]

我想做的是这个。 我将创建一个新列来记录标志(字符串)(即'第一个事件'其中eventdatetime和First Event相同,'最后一个事件'其中eventdatetime和Last事件是相同的,其余的将分配为'其他'。 我尝试使用np.where方法,但它只能给我两个参数。 任何人都可以建议如何处理3个参数以获得上述新列?

由于 番

1 个答案:

答案 0 :(得分:1)

我认为需要numpy.select

m1 = df['eventdatetime'] == df['First Event']
m2 = df['eventdatetime'] == df['Last Event']
df['flag'] = np.select([m1, m2], ['First event','Last event'], default='Other')
print (df)
     gsm_id    eventdatetime    matchdatetime PreviousEventTime  \
0   2462794  8/11/2017 18:46  8/11/2017 18:45   8/11/2017 18:45   
1   2462794  8/11/2017 18:49  8/11/2017 18:45   8/11/2017 18:46   
2   2462794  8/11/2017 19:13  8/11/2017 18:45   8/11/2017 18:49   
3   2462794  8/11/2017 19:31  8/11/2017 18:45   8/11/2017 19:13   
4   2462794  8/11/2017 19:40  8/11/2017 18:45   8/11/2017 19:31   
5   2462794  8/11/2017 20:07  8/11/2017 18:45   8/11/2017 19:40   
6   2462794  8/11/2017 20:09  8/11/2017 18:45   8/11/2017 20:07   
7   2462795  8/12/2017 17:39  8/12/2017 16:30   8/12/2017 16:30   
8   2462795  8/12/2017 17:44  8/12/2017 16:30   8/12/2017 17:39   
9   2462796  8/12/2017 14:23  8/12/2017 14:00   8/12/2017 14:00   
10  2462796  8/12/2017 14:38  8/12/2017 14:00   8/12/2017 14:23   
11  2462796  8/12/2017 14:42  8/12/2017 14:00   8/12/2017 14:38   
12  2462796  8/12/2017 15:08  8/12/2017 14:00   8/12/2017 14:42   
13  2462796  8/12/2017 15:27  8/12/2017 14:00   8/12/2017 15:08   
14  2462797  8/12/2017 14:22  8/12/2017 14:00   8/12/2017 14:00   
15  2462797  8/12/2017 14:25  8/12/2017 14:00   8/12/2017 14:22   
16  2462797  8/12/2017 15:17  8/12/2017 14:00   8/12/2017 14:25   

        First Event       Last Event         flag  
0   8/11/2017 18:46  8/11/2017 20:09  First event  
1   8/11/2017 18:46  8/11/2017 20:09        Other  
2   8/11/2017 18:46  8/11/2017 20:09        Other  
3   8/11/2017 18:46  8/11/2017 20:09        Other  
4   8/11/2017 18:46  8/11/2017 20:09        Other  
5   8/11/2017 18:46  8/11/2017 20:09        Other  
6   8/11/2017 18:46  8/11/2017 20:09   Last event  
7   8/12/2017 17:39  8/12/2017 17:44  First event  
8   8/12/2017 17:39  8/12/2017 17:44   Last event  
9   8/12/2017 14:23  8/12/2017 15:27  First event  
10  8/12/2017 14:23  8/12/2017 15:27        Other  
11  8/12/2017 14:23  8/12/2017 15:27        Other  
12  8/12/2017 14:23  8/12/2017 15:27        Other  
13  8/12/2017 14:23  8/12/2017 15:27   Last event  
14  8/12/2017 14:22  8/12/2017 15:17  First event  
15  8/12/2017 14:22  8/12/2017 15:17        Other  
16  8/12/2017 14:22  8/12/2017 15:17   Last event