Я хочу искать в каждом поднаборе в df
:
df
:
id timestamp data gradient Start
timestamp
2020-01-15 06:12:49.213 40250 2020-01-15 06:12:49.213 20.0 0.00373 NaN
2020-01-15 06:12:49.313 40251 2020-01-15 06:12:49.313 19.5 0.00354 0.0
2020-01-15 08:05:10.083 40256 2020-01-15 08:05:10.083 20.0 0.00020 1.0
2020-01-15 08:05:10.183 40257 2020-01-15 08:05:10.183 20.5 -0.00440 0.0
...
2020-01-31 09:01:50.993 40310 2020-01-31 09:01:50.993 21.0 0.55473 1.0
2020-01-31 09:01:51.093 40311 2020-01-31 09:01:51.093 21.5 0.00589 0.0
...
Поднабор данных начинается с Start==1
и заканчивается следующим Start==1
, Я хочу выполнить поиск в пределах времени каждого поднабора данных до тех пор, пока gradient >0.0003
**, но не включительно ** (end_time
) из start==1
(start_time
), а затем рассчитать среднее значение data
, чтобы получить таблицу как это:
start_time end_time Average
2020-01-15 08:05:10.083 2020-01-15 08:05:23.273 35(for example)
...
Редактировать: Воспроизводимый кадр данных:
d = {'timestamp':["2020-01-15 06:12:49.213", "2020-01-15 06:12:49.313", "2020-01-15 08:05:10.083", "2020-01-15 08:05:10.183", "2020-01-15 09:01:50.993", "2020-01-15 09:01:51.093", "2020-01-15 09:51:01.890", "2020-01-15 09:51:01.990", "2020-01-15 10:40:59.657", "2020-01-15 10:40:59.757", "2020-01-15 10:42:55.693", "2020-01-15 10:42:55.793", "2020-01-15 10:45:35.767", "2020-01-15 10:45:35.867", "2020-01-15 10:45:46.770", "2020-01-15 10:45:46.870", "2020-01-15 10:47:19.783", "2020-01-15 10:47:19.883", "2020-01-15 10:47:22.787"],
'data': [20.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 23.0, 22.5, 23.0, 23.5, 24.0, 24.5, 25.0, 25.5, 26],
'gradient': [NaN, NaN, 0.000000, 0.000148, 0.000294, 0.000294, 0.000339, 0.000339, 0.000334, 0.000334, 0.000000, -0.008618, 0.000000, 0.006247, 0.090884, 0.090884, 0.010751, 0.010751, 0.332889],
'Start': [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,]
}
df = pd.DataFrame(d)
Ожидаемый вывод для воспроизводимого кадра данных:
start_time end_time Average
2020-01-15 08:05:10.083 2020-01-15 09:01:51.093 20.75 = average of (20.0, 20.5, 21.0, 21.5)
2020-01-15 10:45:35.767 2020-01-15 10:45:35.767 23.00 = average of (23.0)