python - 计算累计返回

标签 python pandas dataframe

我已经根据一些市场数据计算了每日返回,并尝试将每个返回添加到累积列 (cum_rets) 中。以下是数据示例:

    timestamp   dash_cap    litecoin_cap    dogecoin_cap    nxt_cap Total_MC    Dal_rets
0   2014-02-14  702537  410011811   80883283    61942277    553539908   NaN
1   2014-02-15  1054625 413848776   73684156    59127182    547714739   -1.052349
2   2014-02-17  1882753 407014106   70512004    59753481    539162344   -1.561469
3   2014-02-18  3766068 398556278   69890414    60219880    532432640   -1.248178
4   2014-02-19  3038521 404855950   71588924    59870181    539353576   1.299871

当我使用此代码时,我不明白为什么:

merged['cum_rets'] = 0
merged['cum_rets'] = merged['cum_rets'].shift(1) + merged.Dal_rets
merged

返回

    timestamp   dash_cap    litecoin_cap    dogecoin_cap    nxt_cap Total_MC    Dal_rets    cum_rets
0   2014-02-14  702537  410011811   80883283    61942277    553539908   NaN NaN
1   2014-02-15  1054625 413848776   73684156    59127182    547714739   -1.052349   -1.052349
2   2014-02-17  1882753 407014106   70512004    59753481    539162344   -1.561469   -1.561469
3   2014-02-18  3766068 398556278   69890414    60219880    532432640   -1.248178   -1.248178

merged['cum_rets'].shift(1) 应检索 cum_rets 的先前值,然后将其添加到 Dal_ret 的当前值code> 从而对 Dal_rets 中的所有值进行增量求和。我知道我可以使用 .cumprod() 但我想了解为什么我的方法不起作用

最佳答案

merged['cum_rets'].shift(1) should retrieve the previous value for cum_rets and then add it to the current value of Dal_ret

是正确的。不过,结论

thus incrementally sumating all values in Dal_rets

不是。

表达式

 a = b + c

abc 视为不同的数组,因为它首先添加bc,然后将结果分配给 aab 是否指的是同一事物并不重要。

<小时/>

顺便说一句,您可能需要这里的 cumsum,而不是 cumprod

关于python - 计算累计返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35239351/

相关文章:

python - 按 Pandas 数据框分组并选择序列中的最大值

python - 扩展/ reshape Pandas 系列列的尺寸

python - 如何在groupby中使用字符串 "mean"或 "sum"来动态化?

Python代码格式化

python - Django + Celery + SQS 设置。 Celery 通过 ampq 连接到默认的 RabbitMQ

python - 根据条件从 pandas 数据框列中删除低计数

python - 将长度为 n 的字符串读取为 pandas 中的 n 列

python - 根据时间戳过滤相似的行作为数据帧中的索引

python - Python 打印语句中的语法错误

python - 通过无法执行的并行Python执行Fortran子例程