Pandas 在具有多个输出的数据帧上应用滚动自定义函数

Pandas 在具有多个输出的数据帧上应用滚动自定义函数,pandas,apply,Pandas,Apply,我有以下数据帧:mydf Date A B C 1973-01-01 0.002 -0.003 0.004 1973-02-01 0.003 -0.005 0.006 ... 我有一个函数,它接受数据帧、日期字段和协方差类型 并返回平均回报、协方差矩阵和年度化协方差矩阵 def myfunc(mydf, dtfield, typecov): #does some computations based on type either

我有以下数据帧:mydf

 Date        A       B      C
 1973-01-01  0.002 -0.003 0.004  
 1973-02-01  0.003 -0.005 0.006  
 ...
我有一个函数,它接受数据帧、日期字段和协方差类型 并返回平均回报、协方差矩阵和年度化协方差矩阵

def myfunc(mydf, dtfield, typecov):

    #does some computations based on type either equal weighted or exponentially weighted 
    ...
    ...
    return eret, cov, covA
对myfunc的调用(mydf,'Date','e')

为了实现这一点,我尝试在pandas中使用滚动功能,使用250窗口,但我不确定如何做到这一点

当我使用for循环时,它工作

最小窗口=250

for i in range(minwindow, minwindow+5):
    temp = mydf[i-minwindow:i]
    eret, c, cA = myfunc(temp,dtfield, typeCov)

谢谢

我不确定我是否正确理解您的参数数据字段,您可以尝试mydf.rolling(250).apply(myfunc,args=(['A','B','C'],'equal_weighted'))日期字段只是为了标识我的数据框架中的日期列。如果我使用for循环,它会起作用,但需要花费很多时间