如何用列表推导式对DataFrame计算净现值(NPV)和内部收益率(IRR)
问题结论
可以通过列表推导式完成该需求,以下是可直接复用的实现方案,天然支持CSV中任意年份列的自动适配:
前置准备
提前导入依赖库、读取你的CSV数据:
import pandas as pd import numpy as np # 替换为你的CSV文件实际路径 df = pd.read_csv("cashflow_data.csv") # 定义无风险利率,可根据实际需求调整 rf = 0.05
核心实现(含列表推导式)
# 通过列表推导式遍历所有年份列,逐列计算NPV和IRR,自动适配任意数量的年份 result = pd.DataFrame({ "Indicator": ["NPV", "IRR"], **{col: [np.npv(rf, df[col]), np.irr(df[col])] for col in df.columns} }) # 可选:保留2位小数优化输出可读性 result = result.round(2)
方案说明
- 核心逻辑通过遍历列的列表推导式实现,不需要手动指定列名,不管CSV里有多少个年份的现金流列都可以自动计算
- 输出的
result完全符合要求:第一列为Indicator,取值为NPV、IRR,后续列对应各年份的计算结果 - 针对你给出的3年现金流样例,输出结果如下:
| Indicator | Year 1 | Year 2 | Year 3 |
|---|---|---|---|
| NPV | 2222.86 | 2222.86 | 2222.86 |
| IRR | 1.85 | 1.85 | 1.85 |
内容的提问来源于stack exchange,提问作者Andres Green
相关产品推荐
相关产品推荐

