计算传感器每天处于特定状态的时间
Calculating amount of time per day a sensor is in a specific state
我有几个传感器经常向 InfluxDB 报告它们的状态。我现在想获得传感器状态每天打开 (1) 的小时数。该图如下所示:
我的 Python 脚本如下所示:
from influxdb_client import InfluxDBClient
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_colwidth', None)
token = 'XXX'
org = 'XXX'
bucket = 'XXX'
query= '''
from(bucket: "XXX")
|> range(start:-6h)
|> filter(fn: (r) => r["name"] == "sensor1")
|> filter(fn: (r) => r["_measurement"] == "undefined")
|> filter(fn: (r) => r["_field"] == "STATE")
|> toInt()
'''
client = InfluxDBClient(url='https://westeurope-1.azure.cloud2.influxdata.com', token=token, org=org, debug=False)
df = client.query_api().query_data_frame(org=org, query=query)
df = df.reindex(columns=['_value', '_time'])
display(df)
_value _time
0 1 2021-11-12 13:22:32+00:00
1 0 2021-11-12 13:22:34+00:00
2 0 2021-11-12 13:26:32+00:00
3 0 2021-11-12 13:26:34+00:00
4 1 2021-11-12 13:28:05+00:00
5 0 2021-11-12 13:28:06+00:00
6 0 2021-11-12 13:29:04+00:00
7 0 2021-11-12 13:29:06+00:00
8 1 2021-11-12 13:39:04+00:00
9 0 2021-11-12 13:39:06+00:00
10 0 2021-11-12 13:41:09+00:00
11 0 2021-11-12 13:41:10+00:00
12 1 2021-11-12 13:52:33+00:00
13 0 2021-11-12 13:52:34+00:00
14 0 2021-11-12 14:00:08+00:00
15 0 2021-11-12 14:00:10+00:00
16 1 2021-11-12 14:07:32+00:00
17 0 2021-11-12 14:07:34+00:00
18 1 2021-11-12 14:17:52+00:00
19 0 2021-11-12 14:17:53+00:00
20 0 2021-11-12 14:18:45+00:00
21 0 2021-11-12 14:18:46+00:00
22 1 2021-11-12 14:22:33+00:00
23 0 2021-11-12 14:22:34+00:00
24 0 2021-11-12 14:32:05+00:00
25 0 2021-11-12 14:32:06+00:00
26 0 2021-11-12 14:33:06+00:00
27 0 2021-11-12 14:33:45+00:00
28 0 2021-11-12 14:33:46+00:00
29 1 2021-11-12 14:37:33+00:00
30 0 2021-11-12 14:37:34+00:00
31 0 2021-11-12 14:48:20+00:00
32 0 2021-11-12 14:48:21+00:00
33 1 2021-11-12 14:52:33+00:00
34 0 2021-11-12 14:52:34+00:00
35 0 2021-11-12 14:56:04+00:00
36 0 2021-11-12 14:56:06+00:00
37 0 2021-11-12 14:57:55+00:00
38 0 2021-11-12 14:57:56+00:00
39 1 2021-11-12 15:22:33+00:00
40 0 2021-11-12 15:22:34+00:00
41 0 2021-11-12 15:23:04+00:00
42 0 2021-11-12 15:23:06+00:00
43 1 2021-11-12 15:26:04+00:00
44 0 2021-11-12 15:26:06+00:00
45 0 2021-11-12 15:26:33+00:00
46 0 2021-11-12 15:26:34+00:00
47 1 2021-11-12 15:37:32+00:00
48 0 2021-11-12 15:37:34+00:00
49 0 2021-11-12 15:41:05+00:00
50 0 2021-11-12 15:41:06+00:00
51 1 2021-11-12 15:52:32+00:00
52 0 2021-11-12 15:52:34+00:00
53 1 2021-11-12 16:03:13+00:00
54 0 2021-11-12 16:03:14+00:00
55 0 2021-11-12 16:20:04+00:00
56 0 2021-11-12 16:20:06+00:00
57 1 2021-11-12 16:22:05+00:00
58 0 2021-11-12 16:37:04+00:00
59 0 2021-11-12 16:37:06+00:00
60 1 2021-11-12 16:37:33+00:00
61 0 2021-11-12 16:37:34+00:00
62 0 2021-11-12 16:43:05+00:00
63 0 2021-11-12 16:43:06+00:00
64 0 2021-11-12 16:43:51+00:00
65 0 2021-11-12 16:43:53+00:00
66 1 2021-11-12 16:56:05+00:00
67 0 2021-11-12 16:56:06+00:00
68 0 2021-11-12 16:56:32+00:00
69 0 2021-11-12 16:56:34+00:00
70 1 2021-11-12 17:07:33+00:00
71 1 2021-11-12 17:07:34+00:00
72 0 2021-11-12 17:08:05+00:00
73 0 2021-11-12 17:08:06+00:00
74 1 2021-11-12 17:10:05+00:00
75 0 2021-11-12 17:10:06+00:00
76 0 2021-11-12 17:11:09+00:00
77 0 2021-11-12 17:11:10+00:00
78 1 2021-11-12 17:22:32+00:00
79 0 2021-11-12 17:22:33+00:00
80 1 2021-11-12 17:22:45+00:00
81 1 2021-11-12 17:24:08+00:00
82 0 2021-11-12 17:24:13+00:00
83 0 2021-11-12 17:24:14+00:00
84 1 2021-11-12 17:25:05+00:00
85 0 2021-11-12 17:25:06+00:00
86 0 2021-11-12 18:14:37+00:00
87 0 2021-11-12 18:14:38+00:00
88 0 2021-11-12 18:45:44+00:00
89 0 2021-11-12 18:45:46+00:00
df['end'] = df['_time'].shift(-1)
df['duration'] = df['end'] - df['_time']
display(df)
_value _time end duration
0 1 2021-11-12 13:22:32+00:00 2021-11-12 13:22:34+00:00 0 days 00:00:02
1 0 2021-11-12 13:22:34+00:00 2021-11-12 13:26:32+00:00 0 days 00:03:58
2 0 2021-11-12 13:26:32+00:00 2021-11-12 13:26:34+00:00 0 days 00:00:02
3 0 2021-11-12 13:26:34+00:00 2021-11-12 13:28:05+00:00 0 days 00:01:31
4 1 2021-11-12 13:28:05+00:00 2021-11-12 13:28:06+00:00 0 days 00:00:01
5 0 2021-11-12 13:28:06+00:00 2021-11-12 13:29:04+00:00 0 days 00:00:58
6 0 2021-11-12 13:29:04+00:00 2021-11-12 13:29:06+00:00 0 days 00:00:02
7 0 2021-11-12 13:29:06+00:00 2021-11-12 13:39:04+00:00 0 days 00:09:58
8 1 2021-11-12 13:39:04+00:00 2021-11-12 13:39:06+00:00 0 days 00:00:02
9 0 2021-11-12 13:39:06+00:00 2021-11-12 13:41:09+00:00 0 days 00:02:03
10 0 2021-11-12 13:41:09+00:00 2021-11-12 13:41:10+00:00 0 days 00:00:01
11 0 2021-11-12 13:41:10+00:00 2021-11-12 13:52:33+00:00 0 days 00:11:23
12 1 2021-11-12 13:52:33+00:00 2021-11-12 13:52:34+00:00 0 days 00:00:01
13 0 2021-11-12 13:52:34+00:00 2021-11-12 14:00:08+00:00 0 days 00:07:34
14 0 2021-11-12 14:00:08+00:00 2021-11-12 14:00:10+00:00 0 days 00:00:02
15 0 2021-11-12 14:00:10+00:00 2021-11-12 14:07:32+00:00 0 days 00:07:22
16 1 2021-11-12 14:07:32+00:00 2021-11-12 14:07:34+00:00 0 days 00:00:02
17 0 2021-11-12 14:07:34+00:00 2021-11-12 14:17:52+00:00 0 days 00:10:18
18 1 2021-11-12 14:17:52+00:00 2021-11-12 14:17:53+00:00 0 days 00:00:01
19 0 2021-11-12 14:17:53+00:00 2021-11-12 14:18:45+00:00 0 days 00:00:52
20 0 2021-11-12 14:18:45+00:00 2021-11-12 14:18:46+00:00 0 days 00:00:01
21 0 2021-11-12 14:18:46+00:00 2021-11-12 14:22:33+00:00 0 days 00:03:47
22 1 2021-11-12 14:22:33+00:00 2021-11-12 14:22:34+00:00 0 days 00:00:01
23 0 2021-11-12 14:22:34+00:00 2021-11-12 14:32:05+00:00 0 days 00:09:31
24 0 2021-11-12 14:32:05+00:00 2021-11-12 14:32:06+00:00 0 days 00:00:01
25 0 2021-11-12 14:32:06+00:00 2021-11-12 14:33:06+00:00 0 days 00:01:00
26 0 2021-11-12 14:33:06+00:00 2021-11-12 14:33:45+00:00 0 days 00:00:39
27 0 2021-11-12 14:33:45+00:00 2021-11-12 14:33:46+00:00 0 days 00:00:01
28 0 2021-11-12 14:33:46+00:00 2021-11-12 14:37:33+00:00 0 days 00:03:47
29 1 2021-11-12 14:37:33+00:00 2021-11-12 14:37:34+00:00 0 days 00:00:01
30 0 2021-11-12 14:37:34+00:00 2021-11-12 14:48:20+00:00 0 days 00:10:46
31 0 2021-11-12 14:48:20+00:00 2021-11-12 14:48:21+00:00 0 days 00:00:01
32 0 2021-11-12 14:48:21+00:00 2021-11-12 14:52:33+00:00 0 days 00:04:12
33 1 2021-11-12 14:52:33+00:00 2021-11-12 14:52:34+00:00 0 days 00:00:01
34 0 2021-11-12 14:52:34+00:00 2021-11-12 14:56:04+00:00 0 days 00:03:30
35 0 2021-11-12 14:56:04+00:00 2021-11-12 14:56:06+00:00 0 days 00:00:02
36 0 2021-11-12 14:56:06+00:00 2021-11-12 14:57:55+00:00 0 days 00:01:49
37 0 2021-11-12 14:57:55+00:00 2021-11-12 14:57:56+00:00 0 days 00:00:01
38 0 2021-11-12 14:57:56+00:00 2021-11-12 15:22:33+00:00 0 days 00:24:37
39 1 2021-11-12 15:22:33+00:00 2021-11-12 15:22:34+00:00 0 days 00:00:01
40 0 2021-11-12 15:22:34+00:00 2021-11-12 15:23:04+00:00 0 days 00:00:30
41 0 2021-11-12 15:23:04+00:00 2021-11-12 15:23:06+00:00 0 days 00:00:02
42 0 2021-11-12 15:23:06+00:00 2021-11-12 15:26:04+00:00 0 days 00:02:58
43 1 2021-11-12 15:26:04+00:00 2021-11-12 15:26:06+00:00 0 days 00:00:02
44 0 2021-11-12 15:26:06+00:00 2021-11-12 15:26:33+00:00 0 days 00:00:27
45 0 2021-11-12 15:26:33+00:00 2021-11-12 15:26:34+00:00 0 days 00:00:01
46 0 2021-11-12 15:26:34+00:00 2021-11-12 15:37:32+00:00 0 days 00:10:58
47 1 2021-11-12 15:37:32+00:00 2021-11-12 15:37:34+00:00 0 days 00:00:02
48 0 2021-11-12 15:37:34+00:00 2021-11-12 15:41:05+00:00 0 days 00:03:31
49 0 2021-11-12 15:41:05+00:00 2021-11-12 15:41:06+00:00 0 days 00:00:01
50 0 2021-11-12 15:41:06+00:00 2021-11-12 15:52:32+00:00 0 days 00:11:26
51 1 2021-11-12 15:52:32+00:00 2021-11-12 15:52:34+00:00 0 days 00:00:02
52 0 2021-11-12 15:52:34+00:00 2021-11-12 16:03:13+00:00 0 days 00:10:39
53 1 2021-11-12 16:03:13+00:00 2021-11-12 16:03:14+00:00 0 days 00:00:01
54 0 2021-11-12 16:03:14+00:00 2021-11-12 16:20:04+00:00 0 days 00:16:50
55 0 2021-11-12 16:20:04+00:00 2021-11-12 16:20:06+00:00 0 days 00:00:02
56 0 2021-11-12 16:20:06+00:00 2021-11-12 16:22:05+00:00 0 days 00:01:59
57 1 2021-11-12 16:22:05+00:00 2021-11-12 16:37:04+00:00 0 days 00:14:59
58 0 2021-11-12 16:37:04+00:00 2021-11-12 16:37:06+00:00 0 days 00:00:02
59 0 2021-11-12 16:37:06+00:00 2021-11-12 16:37:33+00:00 0 days 00:00:27
60 1 2021-11-12 16:37:33+00:00 2021-11-12 16:37:34+00:00 0 days 00:00:01
61 0 2021-11-12 16:37:34+00:00 2021-11-12 16:43:05+00:00 0 days 00:05:31
62 0 2021-11-12 16:43:05+00:00 2021-11-12 16:43:06+00:00 0 days 00:00:01
63 0 2021-11-12 16:43:06+00:00 2021-11-12 16:43:51+00:00 0 days 00:00:45
64 0 2021-11-12 16:43:51+00:00 2021-11-12 16:43:53+00:00 0 days 00:00:02
65 0 2021-11-12 16:43:53+00:00 2021-11-12 16:56:05+00:00 0 days 00:12:12
66 1 2021-11-12 16:56:05+00:00 2021-11-12 16:56:06+00:00 0 days 00:00:01
67 0 2021-11-12 16:56:06+00:00 2021-11-12 16:56:32+00:00 0 days 00:00:26
68 0 2021-11-12 16:56:32+00:00 2021-11-12 16:56:34+00:00 0 days 00:00:02
69 0 2021-11-12 16:56:34+00:00 2021-11-12 17:07:33+00:00 0 days 00:10:59
70 1 2021-11-12 17:07:33+00:00 2021-11-12 17:07:34+00:00 0 days 00:00:01
71 1 2021-11-12 17:07:34+00:00 2021-11-12 17:08:05+00:00 0 days 00:00:31
72 0 2021-11-12 17:08:05+00:00 2021-11-12 17:08:06+00:00 0 days 00:00:01
73 0 2021-11-12 17:08:06+00:00 2021-11-12 17:10:05+00:00 0 days 00:01:59
74 1 2021-11-12 17:10:05+00:00 2021-11-12 17:10:06+00:00 0 days 00:00:01
75 0 2021-11-12 17:10:06+00:00 2021-11-12 17:11:09+00:00 0 days 00:01:03
76 0 2021-11-12 17:11:09+00:00 2021-11-12 17:11:10+00:00 0 days 00:00:01
77 0 2021-11-12 17:11:10+00:00 2021-11-12 17:22:32+00:00 0 days 00:11:22
78 1 2021-11-12 17:22:32+00:00 2021-11-12 17:22:33+00:00 0 days 00:00:01
79 0 2021-11-12 17:22:33+00:00 2021-11-12 17:22:45+00:00 0 days 00:00:12
80 1 2021-11-12 17:22:45+00:00 2021-11-12 17:24:08+00:00 0 days 00:01:23
81 1 2021-11-12 17:24:08+00:00 2021-11-12 17:24:13+00:00 0 days 00:00:05
82 0 2021-11-12 17:24:13+00:00 2021-11-12 17:24:14+00:00 0 days 00:00:01
83 0 2021-11-12 17:24:14+00:00 2021-11-12 17:25:05+00:00 0 days 00:00:51
84 1 2021-11-12 17:25:05+00:00 2021-11-12 17:25:06+00:00 0 days 00:00:01
85 0 2021-11-12 17:25:06+00:00 2021-11-12 18:14:37+00:00 0 days 00:49:31
86 0 2021-11-12 18:14:37+00:00 2021-11-12 18:14:38+00:00 0 days 00:00:01
87 0 2021-11-12 18:14:38+00:00 2021-11-12 18:45:44+00:00 0 days 00:31:06
88 0 2021-11-12 18:45:44+00:00 2021-11-12 18:45:46+00:00 0 days 00:00:02
89 0 2021-11-12 18:45:46+00:00 NaT NaT
print('ON State: {}'.format(df.query('_value == 1')['duration'].sum()))
print('OFF State: {}'.format(df.query('_value == 0')['duration'].sum()))
ON State: 0 days 00:17:24
OFF State: 0 days 05:05:50
正如您在上方看到的,传感器在过去 6 小时内开启了大约 17 分钟,这显然是错误的,正如您在图表中看到的那样。为什么会这样?有人可以帮我找到问题吗?
非常感谢!
我怀疑你换错方向了:
# instead of .shift(1), .shift(-1)
# and change name appropriately
df['_start'] = df._time.shift(1)
# not really necessary to explicitly call pd.to_timedelta
# but makes it clear what's happening
df['_duration'] = pd.to_timedelta(df._time - df._start)
print(f'ON: {df.loc[df._value.eq(1)]._duration.sum()}')
print(f'OFF: {df.loc[df._value.eq(0)]._duration.sum()}')
给予
ON: 0 days 02:34:21
OFF: 0 days 02:48:53
我有几个传感器经常向 InfluxDB 报告它们的状态。我现在想获得传感器状态每天打开 (1) 的小时数。该图如下所示:
我的 Python 脚本如下所示:
from influxdb_client import InfluxDBClient
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_colwidth', None)
token = 'XXX'
org = 'XXX'
bucket = 'XXX'
query= '''
from(bucket: "XXX")
|> range(start:-6h)
|> filter(fn: (r) => r["name"] == "sensor1")
|> filter(fn: (r) => r["_measurement"] == "undefined")
|> filter(fn: (r) => r["_field"] == "STATE")
|> toInt()
'''
client = InfluxDBClient(url='https://westeurope-1.azure.cloud2.influxdata.com', token=token, org=org, debug=False)
df = client.query_api().query_data_frame(org=org, query=query)
df = df.reindex(columns=['_value', '_time'])
display(df)
_value _time
0 1 2021-11-12 13:22:32+00:00
1 0 2021-11-12 13:22:34+00:00
2 0 2021-11-12 13:26:32+00:00
3 0 2021-11-12 13:26:34+00:00
4 1 2021-11-12 13:28:05+00:00
5 0 2021-11-12 13:28:06+00:00
6 0 2021-11-12 13:29:04+00:00
7 0 2021-11-12 13:29:06+00:00
8 1 2021-11-12 13:39:04+00:00
9 0 2021-11-12 13:39:06+00:00
10 0 2021-11-12 13:41:09+00:00
11 0 2021-11-12 13:41:10+00:00
12 1 2021-11-12 13:52:33+00:00
13 0 2021-11-12 13:52:34+00:00
14 0 2021-11-12 14:00:08+00:00
15 0 2021-11-12 14:00:10+00:00
16 1 2021-11-12 14:07:32+00:00
17 0 2021-11-12 14:07:34+00:00
18 1 2021-11-12 14:17:52+00:00
19 0 2021-11-12 14:17:53+00:00
20 0 2021-11-12 14:18:45+00:00
21 0 2021-11-12 14:18:46+00:00
22 1 2021-11-12 14:22:33+00:00
23 0 2021-11-12 14:22:34+00:00
24 0 2021-11-12 14:32:05+00:00
25 0 2021-11-12 14:32:06+00:00
26 0 2021-11-12 14:33:06+00:00
27 0 2021-11-12 14:33:45+00:00
28 0 2021-11-12 14:33:46+00:00
29 1 2021-11-12 14:37:33+00:00
30 0 2021-11-12 14:37:34+00:00
31 0 2021-11-12 14:48:20+00:00
32 0 2021-11-12 14:48:21+00:00
33 1 2021-11-12 14:52:33+00:00
34 0 2021-11-12 14:52:34+00:00
35 0 2021-11-12 14:56:04+00:00
36 0 2021-11-12 14:56:06+00:00
37 0 2021-11-12 14:57:55+00:00
38 0 2021-11-12 14:57:56+00:00
39 1 2021-11-12 15:22:33+00:00
40 0 2021-11-12 15:22:34+00:00
41 0 2021-11-12 15:23:04+00:00
42 0 2021-11-12 15:23:06+00:00
43 1 2021-11-12 15:26:04+00:00
44 0 2021-11-12 15:26:06+00:00
45 0 2021-11-12 15:26:33+00:00
46 0 2021-11-12 15:26:34+00:00
47 1 2021-11-12 15:37:32+00:00
48 0 2021-11-12 15:37:34+00:00
49 0 2021-11-12 15:41:05+00:00
50 0 2021-11-12 15:41:06+00:00
51 1 2021-11-12 15:52:32+00:00
52 0 2021-11-12 15:52:34+00:00
53 1 2021-11-12 16:03:13+00:00
54 0 2021-11-12 16:03:14+00:00
55 0 2021-11-12 16:20:04+00:00
56 0 2021-11-12 16:20:06+00:00
57 1 2021-11-12 16:22:05+00:00
58 0 2021-11-12 16:37:04+00:00
59 0 2021-11-12 16:37:06+00:00
60 1 2021-11-12 16:37:33+00:00
61 0 2021-11-12 16:37:34+00:00
62 0 2021-11-12 16:43:05+00:00
63 0 2021-11-12 16:43:06+00:00
64 0 2021-11-12 16:43:51+00:00
65 0 2021-11-12 16:43:53+00:00
66 1 2021-11-12 16:56:05+00:00
67 0 2021-11-12 16:56:06+00:00
68 0 2021-11-12 16:56:32+00:00
69 0 2021-11-12 16:56:34+00:00
70 1 2021-11-12 17:07:33+00:00
71 1 2021-11-12 17:07:34+00:00
72 0 2021-11-12 17:08:05+00:00
73 0 2021-11-12 17:08:06+00:00
74 1 2021-11-12 17:10:05+00:00
75 0 2021-11-12 17:10:06+00:00
76 0 2021-11-12 17:11:09+00:00
77 0 2021-11-12 17:11:10+00:00
78 1 2021-11-12 17:22:32+00:00
79 0 2021-11-12 17:22:33+00:00
80 1 2021-11-12 17:22:45+00:00
81 1 2021-11-12 17:24:08+00:00
82 0 2021-11-12 17:24:13+00:00
83 0 2021-11-12 17:24:14+00:00
84 1 2021-11-12 17:25:05+00:00
85 0 2021-11-12 17:25:06+00:00
86 0 2021-11-12 18:14:37+00:00
87 0 2021-11-12 18:14:38+00:00
88 0 2021-11-12 18:45:44+00:00
89 0 2021-11-12 18:45:46+00:00
df['end'] = df['_time'].shift(-1)
df['duration'] = df['end'] - df['_time']
display(df)
_value _time end duration
0 1 2021-11-12 13:22:32+00:00 2021-11-12 13:22:34+00:00 0 days 00:00:02
1 0 2021-11-12 13:22:34+00:00 2021-11-12 13:26:32+00:00 0 days 00:03:58
2 0 2021-11-12 13:26:32+00:00 2021-11-12 13:26:34+00:00 0 days 00:00:02
3 0 2021-11-12 13:26:34+00:00 2021-11-12 13:28:05+00:00 0 days 00:01:31
4 1 2021-11-12 13:28:05+00:00 2021-11-12 13:28:06+00:00 0 days 00:00:01
5 0 2021-11-12 13:28:06+00:00 2021-11-12 13:29:04+00:00 0 days 00:00:58
6 0 2021-11-12 13:29:04+00:00 2021-11-12 13:29:06+00:00 0 days 00:00:02
7 0 2021-11-12 13:29:06+00:00 2021-11-12 13:39:04+00:00 0 days 00:09:58
8 1 2021-11-12 13:39:04+00:00 2021-11-12 13:39:06+00:00 0 days 00:00:02
9 0 2021-11-12 13:39:06+00:00 2021-11-12 13:41:09+00:00 0 days 00:02:03
10 0 2021-11-12 13:41:09+00:00 2021-11-12 13:41:10+00:00 0 days 00:00:01
11 0 2021-11-12 13:41:10+00:00 2021-11-12 13:52:33+00:00 0 days 00:11:23
12 1 2021-11-12 13:52:33+00:00 2021-11-12 13:52:34+00:00 0 days 00:00:01
13 0 2021-11-12 13:52:34+00:00 2021-11-12 14:00:08+00:00 0 days 00:07:34
14 0 2021-11-12 14:00:08+00:00 2021-11-12 14:00:10+00:00 0 days 00:00:02
15 0 2021-11-12 14:00:10+00:00 2021-11-12 14:07:32+00:00 0 days 00:07:22
16 1 2021-11-12 14:07:32+00:00 2021-11-12 14:07:34+00:00 0 days 00:00:02
17 0 2021-11-12 14:07:34+00:00 2021-11-12 14:17:52+00:00 0 days 00:10:18
18 1 2021-11-12 14:17:52+00:00 2021-11-12 14:17:53+00:00 0 days 00:00:01
19 0 2021-11-12 14:17:53+00:00 2021-11-12 14:18:45+00:00 0 days 00:00:52
20 0 2021-11-12 14:18:45+00:00 2021-11-12 14:18:46+00:00 0 days 00:00:01
21 0 2021-11-12 14:18:46+00:00 2021-11-12 14:22:33+00:00 0 days 00:03:47
22 1 2021-11-12 14:22:33+00:00 2021-11-12 14:22:34+00:00 0 days 00:00:01
23 0 2021-11-12 14:22:34+00:00 2021-11-12 14:32:05+00:00 0 days 00:09:31
24 0 2021-11-12 14:32:05+00:00 2021-11-12 14:32:06+00:00 0 days 00:00:01
25 0 2021-11-12 14:32:06+00:00 2021-11-12 14:33:06+00:00 0 days 00:01:00
26 0 2021-11-12 14:33:06+00:00 2021-11-12 14:33:45+00:00 0 days 00:00:39
27 0 2021-11-12 14:33:45+00:00 2021-11-12 14:33:46+00:00 0 days 00:00:01
28 0 2021-11-12 14:33:46+00:00 2021-11-12 14:37:33+00:00 0 days 00:03:47
29 1 2021-11-12 14:37:33+00:00 2021-11-12 14:37:34+00:00 0 days 00:00:01
30 0 2021-11-12 14:37:34+00:00 2021-11-12 14:48:20+00:00 0 days 00:10:46
31 0 2021-11-12 14:48:20+00:00 2021-11-12 14:48:21+00:00 0 days 00:00:01
32 0 2021-11-12 14:48:21+00:00 2021-11-12 14:52:33+00:00 0 days 00:04:12
33 1 2021-11-12 14:52:33+00:00 2021-11-12 14:52:34+00:00 0 days 00:00:01
34 0 2021-11-12 14:52:34+00:00 2021-11-12 14:56:04+00:00 0 days 00:03:30
35 0 2021-11-12 14:56:04+00:00 2021-11-12 14:56:06+00:00 0 days 00:00:02
36 0 2021-11-12 14:56:06+00:00 2021-11-12 14:57:55+00:00 0 days 00:01:49
37 0 2021-11-12 14:57:55+00:00 2021-11-12 14:57:56+00:00 0 days 00:00:01
38 0 2021-11-12 14:57:56+00:00 2021-11-12 15:22:33+00:00 0 days 00:24:37
39 1 2021-11-12 15:22:33+00:00 2021-11-12 15:22:34+00:00 0 days 00:00:01
40 0 2021-11-12 15:22:34+00:00 2021-11-12 15:23:04+00:00 0 days 00:00:30
41 0 2021-11-12 15:23:04+00:00 2021-11-12 15:23:06+00:00 0 days 00:00:02
42 0 2021-11-12 15:23:06+00:00 2021-11-12 15:26:04+00:00 0 days 00:02:58
43 1 2021-11-12 15:26:04+00:00 2021-11-12 15:26:06+00:00 0 days 00:00:02
44 0 2021-11-12 15:26:06+00:00 2021-11-12 15:26:33+00:00 0 days 00:00:27
45 0 2021-11-12 15:26:33+00:00 2021-11-12 15:26:34+00:00 0 days 00:00:01
46 0 2021-11-12 15:26:34+00:00 2021-11-12 15:37:32+00:00 0 days 00:10:58
47 1 2021-11-12 15:37:32+00:00 2021-11-12 15:37:34+00:00 0 days 00:00:02
48 0 2021-11-12 15:37:34+00:00 2021-11-12 15:41:05+00:00 0 days 00:03:31
49 0 2021-11-12 15:41:05+00:00 2021-11-12 15:41:06+00:00 0 days 00:00:01
50 0 2021-11-12 15:41:06+00:00 2021-11-12 15:52:32+00:00 0 days 00:11:26
51 1 2021-11-12 15:52:32+00:00 2021-11-12 15:52:34+00:00 0 days 00:00:02
52 0 2021-11-12 15:52:34+00:00 2021-11-12 16:03:13+00:00 0 days 00:10:39
53 1 2021-11-12 16:03:13+00:00 2021-11-12 16:03:14+00:00 0 days 00:00:01
54 0 2021-11-12 16:03:14+00:00 2021-11-12 16:20:04+00:00 0 days 00:16:50
55 0 2021-11-12 16:20:04+00:00 2021-11-12 16:20:06+00:00 0 days 00:00:02
56 0 2021-11-12 16:20:06+00:00 2021-11-12 16:22:05+00:00 0 days 00:01:59
57 1 2021-11-12 16:22:05+00:00 2021-11-12 16:37:04+00:00 0 days 00:14:59
58 0 2021-11-12 16:37:04+00:00 2021-11-12 16:37:06+00:00 0 days 00:00:02
59 0 2021-11-12 16:37:06+00:00 2021-11-12 16:37:33+00:00 0 days 00:00:27
60 1 2021-11-12 16:37:33+00:00 2021-11-12 16:37:34+00:00 0 days 00:00:01
61 0 2021-11-12 16:37:34+00:00 2021-11-12 16:43:05+00:00 0 days 00:05:31
62 0 2021-11-12 16:43:05+00:00 2021-11-12 16:43:06+00:00 0 days 00:00:01
63 0 2021-11-12 16:43:06+00:00 2021-11-12 16:43:51+00:00 0 days 00:00:45
64 0 2021-11-12 16:43:51+00:00 2021-11-12 16:43:53+00:00 0 days 00:00:02
65 0 2021-11-12 16:43:53+00:00 2021-11-12 16:56:05+00:00 0 days 00:12:12
66 1 2021-11-12 16:56:05+00:00 2021-11-12 16:56:06+00:00 0 days 00:00:01
67 0 2021-11-12 16:56:06+00:00 2021-11-12 16:56:32+00:00 0 days 00:00:26
68 0 2021-11-12 16:56:32+00:00 2021-11-12 16:56:34+00:00 0 days 00:00:02
69 0 2021-11-12 16:56:34+00:00 2021-11-12 17:07:33+00:00 0 days 00:10:59
70 1 2021-11-12 17:07:33+00:00 2021-11-12 17:07:34+00:00 0 days 00:00:01
71 1 2021-11-12 17:07:34+00:00 2021-11-12 17:08:05+00:00 0 days 00:00:31
72 0 2021-11-12 17:08:05+00:00 2021-11-12 17:08:06+00:00 0 days 00:00:01
73 0 2021-11-12 17:08:06+00:00 2021-11-12 17:10:05+00:00 0 days 00:01:59
74 1 2021-11-12 17:10:05+00:00 2021-11-12 17:10:06+00:00 0 days 00:00:01
75 0 2021-11-12 17:10:06+00:00 2021-11-12 17:11:09+00:00 0 days 00:01:03
76 0 2021-11-12 17:11:09+00:00 2021-11-12 17:11:10+00:00 0 days 00:00:01
77 0 2021-11-12 17:11:10+00:00 2021-11-12 17:22:32+00:00 0 days 00:11:22
78 1 2021-11-12 17:22:32+00:00 2021-11-12 17:22:33+00:00 0 days 00:00:01
79 0 2021-11-12 17:22:33+00:00 2021-11-12 17:22:45+00:00 0 days 00:00:12
80 1 2021-11-12 17:22:45+00:00 2021-11-12 17:24:08+00:00 0 days 00:01:23
81 1 2021-11-12 17:24:08+00:00 2021-11-12 17:24:13+00:00 0 days 00:00:05
82 0 2021-11-12 17:24:13+00:00 2021-11-12 17:24:14+00:00 0 days 00:00:01
83 0 2021-11-12 17:24:14+00:00 2021-11-12 17:25:05+00:00 0 days 00:00:51
84 1 2021-11-12 17:25:05+00:00 2021-11-12 17:25:06+00:00 0 days 00:00:01
85 0 2021-11-12 17:25:06+00:00 2021-11-12 18:14:37+00:00 0 days 00:49:31
86 0 2021-11-12 18:14:37+00:00 2021-11-12 18:14:38+00:00 0 days 00:00:01
87 0 2021-11-12 18:14:38+00:00 2021-11-12 18:45:44+00:00 0 days 00:31:06
88 0 2021-11-12 18:45:44+00:00 2021-11-12 18:45:46+00:00 0 days 00:00:02
89 0 2021-11-12 18:45:46+00:00 NaT NaT
print('ON State: {}'.format(df.query('_value == 1')['duration'].sum()))
print('OFF State: {}'.format(df.query('_value == 0')['duration'].sum()))
ON State: 0 days 00:17:24
OFF State: 0 days 05:05:50
正如您在上方看到的,传感器在过去 6 小时内开启了大约 17 分钟,这显然是错误的,正如您在图表中看到的那样。为什么会这样?有人可以帮我找到问题吗?
非常感谢!
我怀疑你换错方向了:
# instead of .shift(1), .shift(-1)
# and change name appropriately
df['_start'] = df._time.shift(1)
# not really necessary to explicitly call pd.to_timedelta
# but makes it clear what's happening
df['_duration'] = pd.to_timedelta(df._time - df._start)
print(f'ON: {df.loc[df._value.eq(1)]._duration.sum()}')
print(f'OFF: {df.loc[df._value.eq(0)]._duration.sum()}')
给予
ON: 0 days 02:34:21
OFF: 0 days 02:48:53