我有一份按PERMNO划分的10只股票的清单。我想按PERMNO对这些股票进行分组,并计算每个PERMNO的股票回报率(RET)与市场回报率(vwrett)之间的滚动相关性。我正在尝试的代码如下。
CRSP['rollingcorr'] = CRSP.groupby('PERMNO').rolling_corr(CRSP['RET'],CRSP['vwretd'],10)
我得到的错误如下。
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-32-c18e1ce01302> in <module>()
1 #CRSP['rollingcorr'] = CRSP.rolling_corr(CRSP['vwretd'],CRSP['RET'],120)
----> 2 CRSP['rollingmean'] = CRSP.groupby('PERMNO').rolling_corr(CRSP['vwretd'],10)
3 CRSP.head(20)
C:\Users\rebortz\Anaconda\lib\site-packages\pandas\core\groupby.pyc in __getattr__(self, attr)
296
297 raise AttributeError("%r object has no attribute %r" %
--> 298 (type(self).__name__, attr))
299
300 def __getitem__(self, key):
AttributeError: 'DataFrameGroupBy' object has no attribute 'rolling_corr'
请帮忙!
谢谢
在Python 3.5上运行
rolling.corr()
会生成一个警告:该函数已被弃用,将来可能会停止工作。建议改用Series.rolling(window=<period>).corr(other=series)
。 E、 g使用
pandas.rolling_corr
,而不是DataFrame.rolling_corr
。此外,groupby
返回生成器。见下面的代码。代码:
输出:
您可以将循环部分更改为以下内容,以查看带有新列的原始dataframe post分组。
输出:
如果您想在处理后将它们全部连接在一起(顺便说一句,这可能会让其他人感到困惑),只需在处理组之后使用
concat
。输出:
希望这有帮助。
我找到了一个有效的解决办法。相当简单。
相关问题 更多 >
编程相关推荐