首页 > 解决方案 > 熊猫中的滚动多维函数

问题描述

假设,我有以下代码。

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] ,那么从该矩阵计算任何东西都没有问题。我如何以滚动方式对所有矩阵进行操作?

谢谢!

标签: pandasrolling-computation

解决方案


您可以在辣味.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 和 except 而是只使用 for 循环。


推荐阅读