假设我有一个看起来像这样的表:
Ticker Date ClosingPrice
0 A 01-02-2010 11.4
1 A 01-03-2010 11.5
...
1000 AAPL 01-02-2010 634
1001 AAPL 01-02-2010 635
因此,换句话说,我们有一系列时间序列拼接在一起的每个股票代码符号。现在,我想生成一列每日回报。如果我只有一个符号,那么使用pandas pct_change()
函数会非常容易,但是我如何按照上面的多个时间序列执行它(我可以执行一系列的groupbys,使每个都成为一个数据帧,执行返回计算,然后将它们与pd.concat()
拼接在一起,但这似乎不是最佳的。
答案 0 :(得分:1)
使用groupby
df.set_index(['Ticker', 'Date']).ClosingPrice.groupby(level=0).pct_change()
Ticker Date
A 01-02-2010 NaN
01-03-2010 0.008772
AAPL 01-02-2010 NaN
01-02-2010 0.001577
Name: ClosingPrice, dtype: float64