小编use*_*677的帖子

尝试将日志方法应用于Python中的pandas数据框列时出错

所以,我对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)

python numpy dataframe pandas

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

dataframe ×1

numpy ×1

pandas ×1

python ×1