Вычисление разницы между первым и последним значениями в скользящем окне

Я использую инструмент скользящего окна Pandas на фрейме данных с одним столбцом, индекс которого находится в форме datetime.

Я хотел бы вычислить для каждого окна разницу между первым значением и последним значением указанного окна. Как я могу ссылаться на относительный индекс при задании лямбда-функции? (в скобках ниже)

df2 = df.rolling('3s').apply(...)

person Pandora    schedule 11.01.2018    source источник


Ответы (1)


IIUC:

In [93]: df = pd.DataFrame(np.random.randint(10,size=(9, 3)))

In [94]: df
Out[94]:
   0  1  2
0  7  4  5
1  9  9  3
2  1  7  6
3  0  9  2
4  2  3  7
5  6  7  1
6  1  0  1
7  8  4  7
8  0  0  9

In [95]: df.rolling(window=3).apply(lambda x: x[0]-x[-1])
Out[95]:
     0    1    2
0  NaN  NaN  NaN
1  NaN  NaN  NaN
2  6.0 -3.0 -1.0
3  9.0  0.0  1.0
4 -1.0  4.0 -1.0
5 -6.0  2.0  1.0
6  1.0  3.0  6.0
7 -2.0  3.0 -6.0
8  1.0  0.0 -8.0
person MaxU    schedule 11.01.2018
comment
а что, если вам нужна первая и последняя строка каждого окна? попробовал применить подход, он работает, но просто плохо масштабируется. - person Abhishek Malik; 01.04.2020
comment
Есть ли способ сделать это без подачи заявки? применение безумно медленное - person Martin Rindarøy; 09.04.2021