Рассмотрим кадр данных следующим образом:
Value. TileNo
tmstamp
2016-10-31 20:00:00 0 1
2016-10-31 20:00:02 1 1
2016-10-31 20:00:04 2 2
2016-10-31 20:00:06 -60. 2
2016-10-31 20:00:08 4 2
2016-10-31 20:00:10 7 3
2016-10-31 20:00:12 -5 4
2016-10-31 20:00:14 0 4
2016-10-31 20:00:16 2 4
2016-10-31 20:00:18 9 4
2016-10-31 20:00:20 12 5
при применении скользящего окна следующим образом:
df.groupby('TileNo').rolling(window='4s')['Value.']
сформирует группы и затем внутри них windows размера 4s. Как можно получить доступ к первому и последнему значению каждого из этих скользящих windows? Текущая реализация использует лямбду следующим образом:
lst=[]
lst2 = []
df.groupby('TileNo').rolling(window='4s')['Value.'].apply(lambda x: lst.append(x.values[0]) or 0, raw=False)
df.groupby('TileNo').rolling(window='4s')['Value.'].apply(lambda x: lst2.append(x.values[-1]) or 0, raw=False)
, чтобы получить первое и последнее значения для каждого окна, но этот метод плохо масштабируется. Программа становится слишком медленной, когда размер фрейма данных увеличивается. Попытка получить начальное и конечное значение каждого окна, сохраненного как отдельный столбец в кадре данных.