【发布时间】:2021-04-25 17:16:40
【问题描述】:
我希望在 Pandas 中创建一个滞后的年回报变量。
到目前为止我已经尝试过:
df_ret_lagged = df_ret.set_index(['year', 'cusip'])
df_ret_lagged['yearly_ret_lag'] = df_ret_lagged['year_ret'].shift(12)
df_ret_lagged.reset_index(inplace = True)
但是,这只是将年度回报向下移动 12 行,而不是按 year 分组。下面的数据框显示了代码所做的事情。
year cusip date year_ret yearly_ret_lag
0 1983 000165100 1983-09-01 0.183673 NaN
1 1983 000165100 1983-10-01 0.183673 NaN
2 1983 000165100 1983-11-01 0.183673 NaN
3 1983 000165100 1983-12-01 0.183673 NaN
4 1984 000165100 1984-01-01 -0.482758 NaN
5 1984 000165100 1984-02-01 -0.482758 NaN
6 1984 000165100 1984-03-01 -0.482758 NaN
7 1984 000165100 1984-04-01 -0.482758 NaN
8 1984 000165100 1984-05-01 -0.482758 NaN
9 1984 000165100 1984-06-01 -0.482758 NaN
10 1984 000165100 1984-07-01 -0.482758 NaN
11 1984 000165100 1984-08-01 -0.482758 NaN
12 1984 000165100 1984-09-01 -0.482758 0.183673
13 1984 000165100 1984-10-01 -0.482758 0.183673
14 1984 000165100 1984-11-01 -0.482758 0.183673
15 1984 000165100 1984-12-01 -0.482758 0.183673
16 1985 000165100 1985-01-01 1.700000 -0.482758
17 1985 000165100 1985-02-01 1.700000 -0.482758
18 1985 000165100 1985-03-01 1.700000 -0.482758
19 1985 000165100 1985-04-01 1.700000 -0.482758
理想情况下,我希望 1983 year_ret 填充所有 1984 日期,依此类推。此外,这些必须按 cusip(公司标识符)分组。
谢谢!
【问题讨论】:
-
你到底想对 cusips 做什么?
-
嗨...任何答案对您有帮助吗?如果您认为某个答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将注意力集中在仍然没有答案的旧 SO 问题上。谢谢!
标签: python pandas dataframe data-science finance