Итак, у меня возникла следующая проблема:
У меня есть кадр данных, подобный приведенному ниже, где time_diff_float
- это разница во времени между каждой строкой и строкой выше в минутах. Так, например, у меня было value = 4
20 минут после value = 1
.
value | time_diff_float
1 NaN
4 20
3 13
2 55
5 08
7 15
Сначала я должен проверить, составляет ли разница во времени между двумя строками <60 (один час), и создать столбец, используя формула <code>rem = value (from row above) * lambda ** time difference between 2 rows. Моя лямбда-константа имеет значение 0,97.
И затем, если разница во времени между каждой строкой и двумя вышеупомянутыми строками все еще меньше 60, я должен повторить то же самое, сравнивая каждую строку с 2 ряда выше. И затем я должен сделать то же самое, сравнивая 3 строки выше и т. Д. c.
. Для этого я написал следующий код:
df.loc[df['time_diff_float'] < 60, 'rem_1'] = df['value'].shift() * (lambda_ ** (df['time_diff_float'] - 1))
df.loc[df['time_diff_float'] + df['time_diff_float'].shift() < 60, 'rem_2'] = df['value'].shift(2) * (lambda_ ** (df['time_diff_float'] + df['time_diff_float'].shift() - 1))
df.loc[df['time_diff_float'] + df['time_diff_float'].shift() + df['time_diff_float'].shift(2) < 60, 'rem_3'] = df['value'].shift(3) * (lambda_ ** (df['time_diff_float'] + df['time_diff_float'].shift() + df['time_diff_float'].shift(2) - 1))
Мой вопрос: так как у меня есть Чтобы повторить это по крайней мере в 10 раз (даже больше) с реальными значениями, которые у меня есть, есть ли способ динамически создавать «столбцы rem»?
Заранее спасибо!