Pandas。滚动应用()有3个输入和3个输出

2024-10-03 04:40:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我在里面运行一个叫做计算对冲比率的函数 熊猫。滚动应用. 函数在调用自身时起作用, 但在rolling_apply内部,它会抛出以下错误:

regression = pandas.ols(x=df[xsymbol], y=df[ysymbol])

IndexError: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices

以下是计算套期保值比率的函数:

def calculate_hedgeratio(df, xsymbol, ysymbol):

    import pandas
    from scipy import odr
    import numpy

    regression = pandas.ols(x=df[xsymbol], y=df[ysymbol])
    m = regression.beta[0]
    n = regression.beta[1]
    model = odr.Model(lambda B,x: (B[0]*x + B[1]))
    data = odr.RealData(df[xsymbol].values,df[ysymbol].values, sx=numpy.std(df[xsymbol].values), sy=numpy.std(df[ysymbol].values))
    myodr = odr.ODR(data, model, beta0=[m, n])
    myoutput = myodr.run()
    results = [myoutput.beta[0], myoutput.beta[1], myoutput.res_var]
    return results

这是我称之为的函数:

^{pr2}$

原因是什么?在


Tags: 函数importnumpypandasdfmodelbeta比率
1条回答
网友
1楼 · 发布于 2024-10-03 04:40:15

在calculate\uhedgeratio中,df实际上是一个numpy数组,而不是一个数据帧(这就是为什么会出现索引错误)。在

这是由rolling_apply中的lambda函数引起的,后者只能应用于一个序列。当这个rolling_apply被应用到一个数据帧时,它实际上分别对每一列执行计算。在

相关问题 更多 >