У меня есть данные датчиков за два года в формате pandas. Индекс представляет собой временной ряд. Выглядит это так:
temp1 overtemp time_to_overtemp
datetime
2019-01-02 09:31:00 305.96
2019-01-02 09:32:00 305.98
2019-01-02 09:33:00 305.70
2019-01-02 09:34:00 305.30
2019-01-02 09:35:00 306.88
Я хочу сделать l oop по временному ряду, чтобы заполнить столбцы «overtemp» и «time_to_overtemp». «Overtemp» необходимо присвоить 1, если температура данные в любое время в течение следующих двух недель увеличиваются более чем на 2%. "time_to_overtemp" должен отображать время следующего> 2% чтения, если оно существует в следующие две недели. Если температура показывает в пределах 2% для следующих двух недель, обоим столбцам следует присвоить 0.
Например, 2019-01-02 09:31:00 следует просмотреть данные о температуре за следующие две недели и поставить 0 в оба столбца, потому что все данные в этот период времени находится в пределах 2% от значения. Значение перегрева для 02.01.2020 09:35:00 должно быть равно 1, потому что через неделю значение увеличилось на 5%. Значение time_to_overtemp должно указывать на 7 дней, 2 часа , 38 минут, потому что именно тогда произошло превышение температуры.
Я успешно делаю еще несколько математических задач, используя iterrows:
for datetime, row in df.iterrows():
, но это занимает вечность. И я не еще не научился делать итерации по времени и вычисления.
Я сделал другую маркировку:
df['overtemp'] = np.select([df['temp1']<305, df['temp1']>305], [1,0])
Я думаю, это векторизует процесс? Конечно, это работает намного быстрее, чем повторение. Но я не могу понять, как реализовать часть datetime + две недели.