python - Pandas 中的“逆”cumprod

标签 python pandas

我有一个数据框,其中包含作为索引的日期和一个存储连续日期(即索引中的日期)之间的增长百分比的值列。假设我想通过在索引的第一个日期设置 100 基数然后迭代应用增长百分比来计算“实际”值。使用 cumprod 方法很容易。

现在,我想将索引中的最新日期设置为 100 基。因此,我需要为索引中的每个日期计算“反向”增长。有没有一种简单的方法(和 pythonic)可以用 pandas 做到这一点?

问候,

艾莉亚

最佳答案

考虑随机返回 10 天的数据框 df

np.random.seed([3,1415])
tidx = pd.date_range('2012-04-01', periods=10)
df = pd.DataFrame(dict(A=np.random.rand(10) / 10), tidx)

df

                   A
2012-04-01  0.044494
2012-04-02  0.040755
2012-04-03  0.046015
2012-04-04  0.046524
2012-04-05  0.046269
2012-04-06  0.001655
2012-04-07  0.085045
2012-04-08  0.081774
2012-04-09  0.077796
2012-04-10  0.075798

您想使用 cumprod 然后除以最后一个值

dcum = df.add(1).cumprod()
dcum.div(dcum.iloc[-1]).mul(100)

                     A
2012-04-01   61.539104
2012-04-02   64.047157
2012-04-03   66.994277
2012-04-04   70.111111
2012-04-05   73.355090
2012-04-06   73.476459
2012-04-07   79.725230
2012-04-08   86.244715
2012-04-09   92.954225
2012-04-10  100.000000

关于python - Pandas 中的“逆”cumprod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41797071/

相关文章:

python - 生成新的 csv 文件并按升序排列数据?

.net - 用于修改面孔的图像处理库/API

python - 子集数据框 Pandas 时间序列

python - 获取 pandas 数据框的最后 N 个工作日的平均值

python - Pandas : join/merge/concat two dataframes

python - 将 Pandas 数据帧转换为频率矩阵

python - Python 3.x 中的绘图

python - 使用 lambda 减少列表

python - pandas 按秒计算总和

python - pandas 将第二列堆叠在第一列下方,反之亦然