【问题标题】:Replicating Excel Array Cumulative Multiplication in Pandas在 Pandas 中复制 Excel 数组累积乘法
【发布时间】:2019-07-30 01:17:45
【问题描述】:

如果有一个可以追溯到 36 个月的月度回报时间序列。我需要将它们逐月相乘才能获得 3600 万的复合回报。在 excel 中,我使用数组函数,例如 =((PRODUCT(1+(H3:AQ3)/100))-1)*100,其中的单元格是时间序列。

在熊猫中,我看到 cumprod 是适用的,但我需要在接下来的每个月加 1,这样我就不会得到非常小的数字。我如何在 python 中做到这一点?

返回值从旧到新的样本 DF:

df=pd.DataFrame(data=[0.038,
0.041,
0.045,
0.051,
0.05,
0.058,
0.066,
0.061,
0.07,
0.075,
0.082,
0.084,
0.093,
0.072,
0.092,
0.096,
0.096,
0.11,
0.122,
0.114,
0.137,
0.292,
0.158,
0.163,
0.174,
0.175,
0.173,
0.186,
0.186,
0.201,
0.209,
0.189,
0.208,
0.201,
0.205,
0.194596400000013])

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    只需沿列轴使用product 方法(0

    ((df/100 + 1).product(axis=0) - 1) * 100
    

    【讨论】:

      【解决方案2】:

      Pandas 允许您通过使用 + 运算符为每个元素添加一个常量。所以

      (df + 1).cumprod() - 1
      

      应该得到你想要的。

      【讨论】:

      • 啊。我看到 Exel 宏只会给你一个标量。 cumprod 方法将为您提供每个位置的累积产品列表。而且我也没有包括百分比到分数和分数到百分比的转换。所以,我正在标记 Msaino 的答案。
      猜你喜欢
      • 2021-11-10
      • 2013-02-24
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 2021-09-12
      • 2019-07-01
      • 1970-01-01
      • 2018-12-29
      相关资源
      最近更新 更多