作为一个例子,我创建了一个如下所示的数据框:
date price ticker volume
0 2018-01-01 1.323 AI 2000
1 2018-01-02 1.525 AI 1500
2 2018-01-03 1.045 AI 500
3 2018-01-01 2.110 BOC 3201
4 2018-01-02 2.150 BOC 5200
5 2018-01-03 2.810 BOC 1980
6 2018-01-01 5.199 CAT 2000
7 2018-01-02 4.980 CAT 450
8 2018-01-03 4.990 CAT 3000
Run Code Online (Sandbox Code Playgroud)
所以有3只股票,跨越三天.我想计算2018-01-01和2018-01-03之间每只股票的每日日志回报.
我目前的代码是:
df["logret"] = df.groupby("ticker").apply(np.log(df.price) - np.log(df.price.shift(1)))
Run Code Online (Sandbox Code Playgroud)
但它给我一个错误信息,即Series对象是可变的,因此它们不能被散列.
有人可以向我解释这个错误指向的是什么?如何解决它能够通过每个股票的股票名称来计算日志回报?