我目前正在处理财务数据,但仍处于分析的最后一步。我拥有许多不同公司的大型面板数据以及它们多年来的回报,并且未订购同一家公司多年来的价值。类似于以下内容:
year ticker return_y
0 1985 VLID -0.5838
1 1985 KO 0.3245
2 1994 CTL -0.3063
3 1996 DRYR -0.1607
.. ... ... ...
1356 2002 CHUX -0.2456
1357 1987 HRL -0.0233
1358 2015 KO 0.2343
.. ... ... ...
56798 2017 AFMXF 0.0558
56799 2014 TER 0.0134
我一直试图做的是创建一个单独的数据框,该数据框以三年为基础对每家公司的收益进行汇总,如果缺少一年(例如,我们有1999年和2001年,但没有2000年),则会重新启动从下一点开始滚动。因此是这样的:
3_years ticker return_y
0 1985-1987 VLID -0.0245
1 1986-1988 VLID 0.0366
2 1987-1989 VLID -0.0421
3 1993-1995 VLID -0.1607
.. ... ... ...
12569 2008-2010 AFMXF 0.2349
12570 2012-2015 AFMXF 0.1112
提前谢谢!
答案 0 :(得分:1)
比方说,您的数据帧称为df
。
简而言之:
您将执行以下操作:
# ts stands for time on y-axis and security on x-axys
returns_ts = df.pivot(index='year', columns='ticker', values='return_y')
rolling_returns_ts = returns_ts.rolling(3).sum()
这将为您提供不同格式的滚动回报(我发现更易于使用)。
要将它们恢复为您描述的格式,您可以:
old_format_rolling_returns = rolling_returns_ts.stack().reset_index()
请注意,这假设years
轴必须为datetime
格式。
另外请注意,要进行转换,您需要再次将years
格式更改为您喜欢的格式。