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

如何在Pandas中无循环计算未来现金流百分比增长?

用Pandas实现无循环的未来现金流增长预测

问题描述

已知Pandas提供.pct_change方法用于计算数据列的百分比变化,现需计算未来的百分比增长。目前已通过以下含for循环的函数实现该功能,但希望改用Pandas实现且避免使用循环,询问可行方案:

def cf_future_projection(
    cashflow_of_last_year: float,
    cashflow_pct_grow: float,
    last_observed_year: int,
    n_year_future: int = 5,
) -> dict:

    grow_values = {}
    grow_values[last_observed_year + 1] = cashflow_of_last_year * (
        1 + cashflow_pct_grow
    )
    for year in range(1, n_year_future):
        grow_values[last_observed_year + 1 + year] = grow_values[
            last_observed_year + 1 + year - 1
        ] * (1 + cashflow_pct_grow)

    return grow_values


cf_future_projection(150, 0.15, 2020, 15)

解决方案

这个需求本质是复利增长计算,完全可以用Pandas的向量化操作搞定,不用写循环。核心就是直接生成每一年的复利系数,再和初始现金流相乘。

代码实现

import pandas as pd

def cf_future_projection_pandas(
    cashflow_of_last_year: float,
    cashflow_pct_grow: float,
    last_observed_year: int,
    n_year_future: int = 5,
) -> pd.Series:
    # 生成未来的年份序列
    years = pd.RangeIndex(start=last_observed_year + 1, stop=last_observed_year + 1 + n_year_future)
    # 计算每一年的现金流:初始值 × (1+增长率)^(年份差)
    year_diff = years.to_series() - last_observed_year
    cashflows = cashflow_of_last_year * (1 + cashflow_pct_grow) ** year_diff
    # 把年份设为索引
    cashflows.index = years
    # 如果要返回字典格式,直接调用.to_dict()就行
    return cashflows

# 调用示例
# 返回Series(方便后续分析)
result_series = cf_future_projection_pandas(150, 0.15, 2020, 15)
print(result_series)
# 转成字典格式和原函数输出一致
result_dict = result_series.to_dict()
print(result_dict)

关键说明

  1. 年份生成:用pd.RangeIndex快速创建连续年份,比循环手动累加高效得多。
  2. 向量化运算:直接对整个年份序列做指数运算,一次性算出所有年份的现金流,没有循环迭代,速度更快,尤其是当预测年份很多的时候。
  3. 输出灵活:默认返回pd.Series,方便后续做数据筛选、可视化;如果需要原函数的字典格式,加个.to_dict()就搞定。

结果验证

两种方法的计算结果完全一致,比如2021年的现金流是150 * 1.15 = 172.5,2022年是172.5 * 1.15 = 198.375,和Pandas版本的输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:25:31