计算一系列收益的下行偏差

2024-09-24 06:32:31 发布

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

我试图使用以下代码计算收益数组的下行偏差:

def downside_deviation(arr):
    downside_returns = 0
    arr.loc[arr < 0, 'downside_returns'] = arr
    down_stdev = downside_returns**2
    arraysize = downside_returns.count()
    down_stdev = downside_returns.sum()/arraysize
    down_stdev = np.sqrt(down_stdev)*np.sqrt(12)
    return down_stdev

但我不断遇到以下错误和归因者:

AttributeError: 'float' object has no attribute 'loc'

我想知道是否有人能告诉我这个错误,因为到目前为止我所做的一切都不起作用

万分感谢你的帮助


Tags: 代码def错误npsqrt数组收益loc
2条回答

您正在向函数传递一个float,但它希望它是一个具有.loc属性的类型

Python是“鸭型”的。您可以传递任何您想要的参数,但是当使用成员时,如果他们不存在,您将得到这样的错误

看起来arr变量应该是一个数据帧,但是您为arr变量传递了float对象。因此,它提高了AttributeError: 'float' object has no attribute 'loc'

此外,如果arr实际上是一个数据帧,我看到这个arr.loc[arr < 0, 'downside_returns'] = arr可能会引发下一个错误。为了正确地使用它,您可能需要阅读它的文档(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html)-例如,df.loc[df['shield'] > 6, ['max_speed']]

相关问题 更多 >