【发布时间】:2018-09-12 17:39:51
【问题描述】:
例如,我创建了一个如下所示的数据框:
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
所以有 3 只股票,跨越三天。我想计算 2018-01-01 和 2018-01-03 之间每只股票的每日对数回报。
我当前的代码是:
df["logret"] = df.groupby("ticker").apply(np.log(df.price) - np.log(df.price.shift(1)))
但它向我抛出了一个错误消息,即 Series 对象是可变的,因此它们不能被散列。
有人可以向我解释一下这个错误指向什么吗?以及如何解决它以便能够通过每只股票的股票代码名称计算日志回报?
【问题讨论】:
-
以下解决方案之一有帮助吗?如果是这样,请考虑接受(左侧的绿色勾号),以便其他用户知道。
标签: python python-3.x pandas dataframe