Python 按随机事件对数据帧进行分组,并使用组计数设置一个新列

Python 按随机事件对数据帧进行分组,并使用组计数设置一个新列,python,pandas,Python,Pandas,我一直在努力对数据集进行分类;也许有人能帮我或者给我指出正确的方向 我有一个数据帧,其中包含一系列事件,这些事件一个接一个地发生,在某个随机点,一个事件被注册到其中一列中。看起来是这样的: Timestamp Event 0 10/26/2015 22:50:15 0 1 10/26/2015 22:50:46 0 2 10/26/2015 22:50:50 0 3 10/26/2015 22:50:51 0 4 10/26

我一直在努力对数据集进行分类;也许有人能帮我或者给我指出正确的方向

我有一个数据帧,其中包含一系列事件,这些事件一个接一个地发生,在某个随机点,一个事件被注册到其中一列中。看起来是这样的:

       Timestamp         Event
0  10/26/2015 22:50:15     0
1  10/26/2015 22:50:46     0
2  10/26/2015 22:50:50     0
3  10/26/2015 22:50:51     0
4  10/26/2015 22:51:15     1
5  10/26/2015 22:51:47     0
6  10/26/2015 22:52:38     0
7  10/26/2015 22:54:46     1
8  10/26/2015 22:55:46     0
       Timestamp         Event   Group
0  10/26/2015 22:50:15     0     1
1  10/26/2015 22:50:46     0     1
2  10/26/2015 22:50:50     0     1
3  10/26/2015 22:50:51     0     1
4  10/26/2015 22:51:15     1     1
5  10/26/2015 22:51:47     0     2
6  10/26/2015 22:52:38     0     2
7  10/26/2015 22:54:46     1     2
我需要创建一个新列,用于标识在每次事件“1”之前发生的每组记录。并在该组中设置一个计数器。结果应该是这样的:

       Timestamp         Event
0  10/26/2015 22:50:15     0
1  10/26/2015 22:50:46     0
2  10/26/2015 22:50:50     0
3  10/26/2015 22:50:51     0
4  10/26/2015 22:51:15     1
5  10/26/2015 22:51:47     0
6  10/26/2015 22:52:38     0
7  10/26/2015 22:54:46     1
8  10/26/2015 22:55:46     0
       Timestamp         Event   Group
0  10/26/2015 22:50:15     0     1
1  10/26/2015 22:50:46     0     1
2  10/26/2015 22:50:50     0     1
3  10/26/2015 22:50:51     0     1
4  10/26/2015 22:51:15     1     1
5  10/26/2015 22:51:47     0     2
6  10/26/2015 22:52:38     0     2
7  10/26/2015 22:54:46     1     2
请注意,现在导致“1”事件的记录在结果中被忽略。

您可以在
事件
列上使用
cumsum()
,每当遇到
1
时,该列将提供一个新的组id。结合
shift()
,您将能够按预期创建
列:

df['Group'] = df.Event.shift().cumsum().fillna(0) + 1

df.loc[df.index <= df.Event.iloc[::-1].idxmax()]   
# to filter trailing zero records 

谢谢,@Psidom!你的答案很好!我能再问一件事吗?如果事件是倒数,“1”表示无事件,“0”表示实际事件,该怎么办?您需要使用
~df.event
1-df.event
将其反转为此格式。