rolling_apply将numpy数组传递给应用的函数(当前),到0.14时它应该传递一帧。问题在这里
因此,重新定义函数以在numpy数组上工作。(您当然可以在此处构造一个Dataframe,但是您的索引/列名称将不同)。
In [9]: def gm(df,p): ...: v = ((np.cumprod(df+1))-1)*p ...: return v[-1] ...:
如果要在自定义函数中使用更多的熊猫函数,请执行此 *** 作(请注意,调用帧的标记 不会 通过ATM传递)。
def gm(arr,p): df = Dataframe(arr) v =(((df+1).cumprod())-1)*p return v.iloc[-1]
通过lambda传递
In [11]: pd.rolling_apply(tmp,50,lambda x: gm(x,5)).tail(20)Out[11]: A B2006-06-04 0.004207 -0.0021122006-06-05 0.003880 -0.0015982006-06-06 0.003809 -0.0022282006-06-07 0.002840 -0.0039382006-06-08 0.002855 -0.0049212006-06-09 0.002450 -0.0046142006-06-10 0.001809 -0.0044092006-06-11 0.001445 -0.0059592006-06-12 0.001297 -0.0068312006-06-13 0.000869 -0.0078782006-06-14 0.000359 -0.0081022006-06-15 -0.000885 -0.0079962006-06-16 -0.001838 -0.0082302006-06-17 -0.003036 -0.0086582006-06-18 -0.002280 -0.0085522006-06-19 -0.001398 -0.0078312006-06-20 -0.000648 -0.0078282006-06-21 -0.000799 -0.0076162006-06-22 -0.001096 -0.0067402006-06-23 -0.001160 -0.006004[20 rows x 2 columns]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)