在数据框熊猫中创建滚动聚合值

时间:2020-04-09 13:50:20

标签: python pandas numpy finance

我目前正在处理财务数据,但仍处于分析的最后一步。我拥有许多不同公司的大型面板数据以及它们多年来的回报,并且未订购同一家公司多年来的价值。类似于以下内容:

        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

提前谢谢!

1 个答案:

答案 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格式更改为您喜欢的格式。

相关问题