You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python pandas中实现累积除法运算

解决方案

你的需求可以通过Pandas内置的cumprod(累积乘积)函数直接实现,不需要额外开发自定义累积除法函数:你需要的每一步计算都是前一个Discount值除以(1+当前Rates),本质是对1/(1+Rates)序列做累积乘积,完全匹配cumprod的使用场景。

方法1:直接使用cumprod实现(推荐)

代码示例:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'Rates': [0.000028745455]*7
})

# 计算Discount列
df['Discount'] = (1/(1 + df['Rates'])).cumprod()

# 输出保留9位小数,和预期格式一致
print(df.round(9))

运行后输出和你给出的预期结果完全匹配:

Rates  Discount
0  2.874546e-05  0.999971255
1  2.874546e-05  0.999942512
2  2.874546e-05  0.999913769
3  2.874546e-05  0.999885026
4  2.874546e-05  0.999856285
5  2.874546e-05  0.999827545
6  2.874546e-05  0.999798805

这个方案是最优解,底层采用向量化计算,性能远高于手动循环实现,即使处理百万级行的数据也能快速完成。

方法2:通用累积除法实现

如果你需要更通用的、支持任意初值的累积除法功能,可以用Numpy的ufunc accumulate方法实现:

import numpy as np

# 初值设为1,除数序列为1+Rates
divisors = 1 + df['Rates'].values
cum_div = np.divide.accumulate(np.insert(divisors, 0, 1))[1:]
df['Discount'] = cum_div

这个方案可以适配任意自定义初值的累积除法场景,不需要转换为乘积逻辑。

内容的提问来源于stack exchange,提问作者Yaser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:39:00