Python大Pandas事件研究

2024-10-04 11:30:57 发布

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

我正在尝试对Python熊猫进行一项事件研究。我有两个数据集,一个有日期和事件描述,另一个数据集有股票的每日股票收益。我想要的是一个数据集,包含事件前后90天的股票收益。在

数据1示例:
StockID事件日期
2001年1月1日
2002年5月1日 2005年1月10日
2006年1月12日
... ... 在

数据2示例:
StockID日期返回
1996年1月1日0.01
1996年1月2日0.01
1996年1月3日0.02
... ... ...
2010年12月20日0.02
1996年1月1日0.01
... ... ...
中1/1/1996 0.05

想要的数据集示例:
StockID EventDate返回事件
... ... ... ...
A 2000年12月31日0.01-1
2001年1月1日0.02 0
2001年1月2日0.01 1
... ... ... ...
B 2002年4月30日0.01-1
2002年5月1日0.02 0
2002年5月2日0.01 1
... ... ... ...
2005年10月1日0.02 0
.. .. .. .. 在

我试图引导/延迟Data2上的变量,以创建180个新变量并将其合并到Data1中,但由于Data2有点大,因此效率非常低,并导致内存问题(使用了100GB以上的RAM)。在

我试了一下:

hshifts = range(1, 91)
for hshift in hshifts:
    colname = 'RETN%d' % hshift
    data2[colname] = data2.groupby('StockID')['RET'].shift(hshift)
for hshift in hshifts:
    colname = 'RETP%d' % hshift
    data2[colname] = data2.groupby('StockID')['RET'].shift(-hshift)

wanted_dataset = pd.merge(data1, data2, on='Date')

有没有更有效的方法?在


Tags: 数据in示例for事件收益股票groupby