小编cqs*_*ack的帖子

DataFrame按组计算每个股票的日志退货

作为一个例子,我创建了一个如下所示的数据框:

         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对象是可变的,因此它们不能被散列.

有人可以向我解释这个错误指向的是什么?如何解决它能够通过每个股票的股票名称来计算日志回报?

python dataframe python-3.x pandas

10
推荐指数
3
解决办法
1522
查看次数

标签 统计

dataframe ×1

pandas ×1

python ×1

python-3.x ×1