在熊猫中滚动多维函数

时间:2019-01-20 03:25:30

标签: pandas rolling-computation

比方说,我有以下代码。

import numpy as np
import pandas as pd

x = pd.DataFrame(np.random.randn(100, 3)).rolling(window=10, center=True).cov()

对于每个索引,我都有一个3x3矩阵。我想计算特征值,然后计算这些特征值的某些函数。或者,也许我可能想计算特征值和特征向量的某些函数。关键是,如果我采用x.loc [0],那么从该矩阵计算任何内容都没有问题。如何滚动处理所有矩阵?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在 spicy.sparse.linalg 中使用类似的特征向量/特征值方法。

import numpy as np
import pandas as pd
from scipy import linalg as LA

x = pd.DataFrame(np.random.randn(100, 3)).rolling(window=10, center=True).cov()
for i in range(len(x)):
    try:
        e_vals,e_vec = LA.eig(x.loc[i])
        print(e_vals,e_vec)
    except:
        continue

如果不存在NaN值,则无需使用try和,而是只进行for循环。