Мне нужно найти данные между определенными триггерами в кадре данных, который содержит несколько сигналов реального времени и один столбец с меткой времени. Эти триггеры сохраняются в отдельном фрейме данных. У меня есть рабочее решение с for-l oop, которое требует времени на относительно большой набор данных, который я использую. Я пытаюсь ускорить работу с помощью списков, но не могу найти рабочего решения. Есть ли у кого-нибудь идеи, как это сделать быстрее?
Решения for-l oop:
Так выглядит фрейм данных триггера:
timestamp_x start_trig id timestamp_y end_trig
0 1592724037612 1.0 12 1592724068408 -1.0
1 1592724459283 1.0 23 1592724490290 -1.0
2 1592724514246 1.0 17 1592724545450 -1.0
И это код для добавления строк в старом фрейме данных с именем «данные» в новый фрейм данных с именем new_df
for i in range(len(df_trig)):
mask = data[(data['timestamp'] > df_trig.iloc[i].timestamp_x) & (data['timestamp'] < df_trig.iloc[i].timestamp_y)]
new_df = new_df.append(mask)
Это то, что я пытался решить эту проблему с генератором, который у меня не работает:
new_df = pd.DataFrame(data[(data['timestamp'] > low_lim) & (data['timestamp'] < upp_lim)] for low_lim,upp_lim in zip(df_trig['timestamp_x'], df_trig['timestamp_y']))
Заранее спасибо за ответы!
РЕДАКТИРОВАТЬ:
Исходные данные frame содержит выглядит следующим образом:
timestamp id param1
0 1592724037612 23 56.1
1 1592724037712 23 56.1
2 1592724037812 23 56.0
...
100 1592724047612 17 54.7
Цель состоит в том, чтобы переместить все строки, которые находятся между любой из пар триггеров из другого кадра данных. Поэтому новый фрейм данных выглядит почти идентично, за исключением того, что отсутствуют строки, выходящие за пределы диапазонов, определенных в фрейме данных триггера.