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中,或者您的意思是什么?熊猫,是吗?是的,这是熊猫数据帧