我试图使用以下代码计算收益数组的下行偏差:
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'
我想知道是否有人能告诉我这个错误,因为到目前为止我所做的一切都不起作用
万分感谢你的帮助
您正在向函数传递一个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']]
相关问题 更多 >
编程相关推荐