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

Python DataFrame计算余额列:初始固定值迭代计算问题

解决DataFrame生成余额列的问题

原代码的问题

  1. 语法错误:df['return] 缺少右引号,正确写法是 df['return']
  2. 初始值位置错误:你把初始余额放在了索引1的位置,但预期第一行的余额是1000*(1+0.01)=1010,初始值应该是第一行的前置参考值
  3. 逻辑缺陷:shift(1) 无法实现累积计算,第一行的shift(1)结果是NaN,后续计算全为NaN,无法形成连续的余额迭代链

正确实现方法

方法一:用cumprod()高效计算(推荐)

这是最简洁高效的方式,利用累积乘积直接生成结果:

import pandas as pd

# 构造示例数据
data = {'return': [0.01, 0.03, 0.045]}
df = pd.DataFrame(data)

# 计算累积乘积并乘以初始余额1000
df['current balance'] = 1000 * (1 + df['return']).cumprod()

# 保留两位小数对齐预期输出
df['current balance'] = df['current balance'].round(2)

运行结果与预期一致:

return  current balance
0    0.01           1010.00
1    0.03           1040.30
2    0.045          1087.11

方法二:循环迭代(适合理解逻辑)

如果想直观看到每一步的计算过程,可以用循环:

import pandas as pd

data = {'return': [0.01, 0.03, 0.045]}
df = pd.DataFrame(data)

prev_balance = 1000
balance_list = []

for ret in df['return']:
    curr_balance = prev_balance * (1 + ret)
    balance_list.append(curr_balance)
    prev_balance = curr_balance

df['current balance'] = pd.Series(balance_list).round(2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:30:51