python将时间序列事件转换为开-关对

2024-10-03 19:28:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个单一的安全相关报警和正常设备报警表。这些警报正在被记录下来。这张桌子看起来像

Name                        record     Timestamp
S303R2_LS_STN_ATD_SENSOR_ERR    1   19-11-2020 06:22:53
S303R2_LS_STN_ATD_SENSOR_ERR1   1   19-11-2020 06:22:53
S303R2_LS_STN_ATD_SENSOR_ERR    0   19-11-2020 06:22:55
S303R2_LS_STN_ATD_SENSOR_ERR1   0   19-11-2020 06:22:55
S304R2_LS_STN_ATD_SENSOR_ERR    1   19-11-2020 07:05:28
S304R2_LS_STN_ATD_SENSOR_ERR    0   19-11-2020 07:05:30

用于安全相关标签;如果记录=0,则报警打开,记录=1,则正常设备标签的报警关闭(条件1);如果记录=1,则报警开启;如果记录=0,则报警关闭(条件2)

我想得到的是

    Name                              intime                   outtime 
S303R2_LS_STN_ATD_SENSOR_ERR    19-11-2020 06:22:53   19-11-2020 06:22:55
S303R2_LS_STN_ATD_SENSOR_ERR1   19-11-2020 06:22:53   19-11-2020 06:22:55
S304R2_LS_STN_ATD_SENSOR_ERR    19-11-2020 07:05:28   19-11-2020 07:05:30
S302R1_LS_STN_ATD_SENSOR_ERR    19-11-2020 08:07:08   19-11-2020 08:07:15

我有一张普通设备标签的清单。若该标签名称在列表中可用,则应在条件2下形成报警开/关对,或LSE报警开/关应基于条件1

注意:当设备关闭和打开时,这会变得棘手。所有设备标签将初始化为值0,安全标签初始化为1

附加数据集链接:https://drive.google.com/file/d/19NIm_WWJDqSOUDc3O5G9pFW2InsQ4GOT/view普通设备标记链接:https://drive.google.com/file/d/1UFFT-m4j6xlzKVQk8qjjsrZuQj6jJwSG/view


Tags: namehttps报警链接atd记录标签sensor
1条回答
网友
1楼 · 发布于 2024-10-03 19:28:34

Name, record对中存在重复项,因此首先由^{}创建辅助列,然后与^{}一起使用删除helepr列和重命名列:

df['g'] = df.groupby(['Name','record']).cumcount()
df1 = (df.pivot(index=['Name', 'g'], columns='record',values='Timestamp')
         .rename(columns={0:'intime',1:'outtime'})
         .reset_index(level=1, drop=True)
         .reset_index())

最后一个是使用^{}通过掩码交换列中的值,以获得使用list的测试成员资格:

m = df1['Name'].isin(L)
df1.loc[m, ['intime','outtime']] = df1.loc[m, ['outtime','intime']].to_numpy()

print (df1)
record                           Name               intime  \
0        S302R1_LS_STN_ATD_SENSOR_ERR  19-11-2020 08:07:08   
1        S302R1_LS_STN_ATD_SENSOR_ERR  19-11-2020 08:07:19   
2           S302_INTI_RB2_WATER_ERROR  19-11-2020 08:57:08   
3           S302_INTI_RB2_WATER_ERROR  19-11-2020 08:58:00   
4        S303R2_LS_STN_ATD_SENSOR_ERR  19-11-2020 06:22:53   
5       S303R2_LS_STN_ATD_SENSOR_ERR1  19-11-2020 06:22:53   
6        S304R2_LS_STN_ATD_SENSOR_ERR  19-11-2020 07:05:28   
7        S315R1_LS_STN_ATD_SENSOR_ERR  19-11-2020 11:58:48   
8        S316R2_LS_STN_ATD_SENSOR_ERR  19-11-2020 11:45:32   
9        S317R2_LS_STN_ATD_SENSOR_ERR  19-11-2020 11:45:32   
10       S318R1_LS_STN_ATD_SENSOR_ERR  19-11-2020 11:58:48   

record              outtime  
0       19-11-2020 08:07:15  
1       19-11-2020 11:57:20  
2       19-11-2020 08:57:59  
3       19-11-2020 08:58:00  
4       19-11-2020 06:22:55  
5       19-11-2020 06:22:55  
6       19-11-2020 07:05:30  
7       19-11-2020 11:58:59  
8       19-11-2020 11:45:50  
9       19-11-2020 11:59:50  
10      19-11-2020 11:58:59  

相关问题 更多 >