我想计算一个 Nx2 矩阵中取大小为2的滚动窗口所得到的多个 2x2 矩阵的行列式。这里我仅将行列式作为示例函数。通常,我希望对一个通过在较大的数据框上窗口化而得到的数据框应用一个函数。
例如,这是一个单独的 2x2 矩阵,我可以这样计算行列式:
import pandas as pd
import numpy as np
d = pd.DataFrame({
"X": [1,2],
"Y": [3,4]
})
np.linalg.det(d)
现在,我可以通过沿着以下数据框的axis=0滑动大小为2的窗口来形成4个2x2矩阵:
df = pd.DataFrame({
"A": [1,2,3,4,5],
"B": [6,7,8,9,10],
})
看起来像这样:
A B
0 1 6
1 2 7
2 3 8
3 4 9
4 5 10
所以我将得到[-5.,-5.,-5.,-5.]
据我所知,pandas.DataFrame.rolling和rolling.apply只能应用于1D向量,而不能应用于数据框?你会怎么做?
rolling().apply()
适用于多列数据(而determinant只是一个示例函数)。 - Ken Wei