首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python计算每项投资的XIRR

如何使用python计算每项投资的XIRR
EN

Stack Overflow用户
提问于 2021-11-28 09:05:07
回答 1查看 584关注 0票数 0

我试图应用XIRR公式,以便每项投资的百分比分别计算。

我在excel文件中有如下数据:

https://i.stack.imgur.com/yqMiV.png

标题:脚本、日期、值

结果: Scrip和XIRR

已使用的Python库:

#pip安装pyxirr

从pyxirr进口xirr

我正在计算如下所示的单个脚本代码,并将其附加到dataframe中:

代码语言:javascript
运行
复制
S1= df[["Date","Value"]][df["Script"]=="S1"]
S1= S1[["Date","Value"]]
S1_1= round(xirr(S1),2)*100
S1_1= pd.DataFrame({"Script": "S1","XIRR": S1_1},index=[1])
XIRR = XIRR.append(S1_1, ignore_index=True)

如何应用函数/循环在一个地方计算不同的脚本,并创建一个新的结果数据(图像附呈)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-04 08:52:36

您可以按DataFrameScript进行分组,并将xirr函数应用于每个组:

代码语言:javascript
运行
复制
from io import StringIO
import pandas as pd
from pyxirr import xirr

# some data for reproducibility:
csv_content = """
Script,Date,Value,Comment
S1,10/20/2019,-2000,Invested
S1,11/19/2019,-1800,Invested
S1,12/19/2019,-1600,Invested
S1,11/29/2021,9000,Current Value
S2,9/25/2019,-2000,Invested
S2,10/25/2019,-1800,Invested
S2,11/24/2019,-1600,Invested
S2,11/28/2021,9000,Current Value
"""
df = pd.read_csv(StringIO(csv_content), parse_dates=["Date"])

# the code you actually need
# [["Date", "Value"]] selects only columns required for xirr
result = df.groupby("Script")[["Date", "Value"]].apply(xirr)
print(result)

结果将是

代码语言:javascript
运行
复制
Script
S1    0.285053
S2    0.275016
dtype: float64
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70141947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档