所以,我对Python和Pandas(以及一般的编程)都很陌生,但是看起来很简单,我遇到了麻烦.所以我使用SQL查询提取的数据创建了以下数据框(如果您需要查看SQL查询,请告诉我,我会粘贴它)
spydata = pd.DataFrame(row,columns=['date','ticker','close', 'iv1m', 'iv3m'])
tickerlist = unique(spydata[spydata['date'] == '2013-05-31'])
Run Code Online (Sandbox Code Playgroud)
之后,我编写了一个函数,使用已经存在的数据在数据框中创建一些新列:
def demean(arr):
arr['retlog'] = log(arr['close']/arr['close'].shift(1))
arr['10dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))
arr['60dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))
arr['90dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))
arr['1060rat'] = arr['10dvol']/arr['60dvol']
arr['1090rat'] = arr['10dvol']/arr['90dvol']
arr['60dis'] = (arr['1060rat'] - arr['1060rat'].mean())/arr['1060rat'].std()
arr['90dis'] = (arr['1090rat'] - arr['1090rat'].mean())/arr['1090rat'].std()
return arr
Run Code Online (Sandbox Code Playgroud)
我遇到问题的唯一部分是函数的第一行:
arr['retlog'] = log(arr['close']/arr['close'].shift(1))
Run Code Online (Sandbox Code Playgroud)
当我运行时,使用此命令,我收到一个错误:
result = spydata.groupby(['ticker']).apply(demean)
Run Code Online (Sandbox Code Playgroud)
错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-196-4a66225e12ea> in <module>()
----> 1 result = spydata.groupby(['ticker']).apply(demean)
2 results2 = …Run Code Online (Sandbox Code Playgroud)