Я хочу применить разные скользящие окна к моему фрейму данных, однако я получаю только значения NaN после использования функции apply в сочетании с лямбда-функцией.Как я могу решить это?
matrix = [(222, 34, 23),
(333, 31, 11),
(444, 16, 21),
(555, 32, 22),
(666, 33, 27),
(777, 35, 11)
]
values = [2,3]
dfObj = pd.DataFrame(matrix, index =
[dt.date(2019,12,31),dt.date(2019,1,31),dt.date(2019,2,28),dt.date(2019,3,31),dt.date(2019,4,30),
dt.date(2019,5,31)], columns=list('abc'))
Result = dfObj.apply(lambda x:x[dfObj.columns.values].rolling(2).sum())
a b c
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
Мой желаемый результат должен выглядеть следующим образом:
test = []
test.append(dfObj.a.rolling(2).sum())
test.append(dfObj.a.rolling(3).sum())
test.append(dfObj.b.rolling(2).sum())
test.append(dfObj.b.rolling(3).sum())
test = pd.DataFrame(test).T
Я знаю, как написать это в хорошем цикле, но это только для пояснения
a a b b
2019-12-31 NaN NaN NaN NaN
2019-01-31 555.0 NaN 65.0 NaN
2019-02-28 777.0 999.0 47.0 81.0
2019-03-31 999.0 1332.0 48.0 79.0
2019-04-30 1221.0 1665.0 65.0 81.0
2019-05-31 1443.0 1998.0 68.0 100.0