Я хочу применить функцию к скользящему окну. Все ответы, которые я здесь увидел, направлены на применение к одной строке / столбцу, но я хотел бы применить свою функцию ко всему окну. Вот упрощенный пример:
import pandas as pd
data = [ [1,2], [3,4], [3,4], [6,6], [9,1], [11,2] ]
df = pd.DataFrame(columns=list('AB'), data=data)
Это df
:
A B
0 1 2
1 3 4
2 3 4
3 6 6
4 9 1
5 11 2
Возьмите некоторую функцию, чтобы применить к всему окну:
df.rolling(3).apply(lambda x: x.shape)
В этом примере я хотел бы получить что-то вроде:
some_name
0 NA
1 NA
2 (3,2)
3 (3,2)
4 (3,2)
5 (3,2)
Конечно, форма используется в качестве примера, показывающего, что f
рассматривает все окно как объект вычисления, а не только строку / столбец. Я попытался поиграть с ключевым словом axis
для rolling
, а также с ключевым словом raw
для apply
, но безуспешно. Другие методы (agg, transform
), похоже, тоже не доставляют.
Конечно, я могу сделать это с пониманием списка. Просто подумал, что есть более простой / чистый способ сделать это.