Python 从时间戳创建事件

Python 从时间戳创建事件,python,Python,也许有人可以帮我: 我有一个带有时间增量的数据帧: timestamp Time_Delta 01.12.2014 00:10 0 01.12.2014 00:25 15 01.12.2014 00:30 5 01.12.2014 00:35 5 01.12.2014 00:50 15 01.12.2014 01:15 25 01.12.2014 01:20 5 01.12.2014 01

也许有人可以帮我:

我有一个带有时间增量的数据帧:

timestamp       Time_Delta 
01.12.2014 00:10     0     
01.12.2014 00:25     15   
01.12.2014 00:30     5    
01.12.2014 00:35     5    
01.12.2014 00:50     15   
01.12.2014 01:15     25
01.12.2014 01:20     5
01.12.2014 01:35     15
01.12.2014 02:05     30
01.12.2014 02:25     20
01.12.2014 02:30     5    
01.12.2014 02:35     5    
01.12.2014 02:40     5    
01.12.2014 02:50     10   
01.12.2014 03:15     25
01.12.2014 03:20     5    
01.12.2014 03:30     10  
01.12.2014 03:40     10   
01.12.2014 03:55     15   
01.12.2014 04:25     30
我想要的是,如果TimeDelta小于或等于15分钟,并且至少连续发生三次,则创建事件。它应该是这样的:

timestamp      Time_Delta Event_Nr 
01.12.2014 00:10    0     
01.12.2014 00:25    15     1
01.12.2014 00:30    5      1
01.12.2014 00:35    5      1
01.12.2014 00:50    15     1
01.12.2014 01:15    25
01.12.2014 01:20    5
01.12.2014 01:35    15
01.12.2014 02:05    30
01.12.2014 02:25    20 
01.12.2014 02:30    5      2
01.12.2014 02:35    5      2
01.12.2014 02:40    5      2
01.12.2014 02:50    10     2
01.12.2014 03:15    25
01.12.2014 03:20    5      3
01.12.2014 03:30    10     3
01.12.2014 03:40    10     3 
01.12.2014 03:55    15     3
01.12.2014 04:25    30
df1=DataFrame(index=df.index, columns=['Number_Timestamps', 'Event_Number'])
Event_Nr=0
index=0
cnt1=0
cnt2=0
for i in range(len(df.index)-1):
    if df.Time_Delta.values[i]<=15:
        cnt1=cnt1+1
        if (cnt1>=3) & (df.Time_Delta.values[i+1]<=15):
        cnt2=cnt2+1
        index=i-cnt2
    else:
        index=i-cnt2
        df1.Event_Number.values[index+2:i+1]=Event_Nr                      
        Event_Nr+=1
        cnt2=2
不幸的是,我的python技能还很弱,所以如果有人能帮助我,那就太好了

致意

我的代码如下所示:

timestamp      Time_Delta Event_Nr 
01.12.2014 00:10    0     
01.12.2014 00:25    15     1
01.12.2014 00:30    5      1
01.12.2014 00:35    5      1
01.12.2014 00:50    15     1
01.12.2014 01:15    25
01.12.2014 01:20    5
01.12.2014 01:35    15
01.12.2014 02:05    30
01.12.2014 02:25    20 
01.12.2014 02:30    5      2
01.12.2014 02:35    5      2
01.12.2014 02:40    5      2
01.12.2014 02:50    10     2
01.12.2014 03:15    25
01.12.2014 03:20    5      3
01.12.2014 03:30    10     3
01.12.2014 03:40    10     3 
01.12.2014 03:55    15     3
01.12.2014 04:25    30
df1=DataFrame(index=df.index, columns=['Number_Timestamps', 'Event_Number'])
Event_Nr=0
index=0
cnt1=0
cnt2=0
for i in range(len(df.index)-1):
    if df.Time_Delta.values[i]<=15:
        cnt1=cnt1+1
        if (cnt1>=3) & (df.Time_Delta.values[i+1]<=15):
        cnt2=cnt2+1
        index=i-cnt2
    else:
        index=i-cnt2
        df1.Event_Number.values[index+2:i+1]=Event_Nr                      
        Event_Nr+=1
        cnt2=2
df1=DataFrame(index=df.index,列=['Number\u Timestamps','Event\u Number']))
事件编号=0
索引=0
cnt1=0
cnt2=0
对于范围内的i(长度(测向指数)-1):

如果df.Time_Delta.values[i]=3)和(df.Time_Delta.values[i+1]我将不给您代码,而只是一种解决此问题的方法

您应该准备一个缓冲区变量(即行列表),其中包含您尚未作出决定的已处理行。作出决定后,您只需将其元素放入新的数据帧(或其他类型的数据结构)中,即可刷新缓冲区

创建用于循环处理所有行的变量,以及循环外部的两个变量:一个变量保留最后一个已知的Event_nr值,另一个为空缓冲区

当您处理for循环中的一行时,将其放入缓冲区。然后检查(考虑增量值和您的所有其他假设)您是否可以决定到目前为止已放入缓冲区的(所有)行。 如果可以做出决定,则通过编辑Event_nr值(如果条件已满足)将这些行添加到新的数据帧中,并清空缓冲区。
如果无法做出决定,请继续将行放入缓冲区并检查条件。

我相信您的dict中有此数据?或者您有两个单独的列表分别对齐?都在一个df中,或者您的意思是什么?熊猫,是吗?是的,这是熊猫数据帧