我有一个通过mySQL查询填充的数据帧。我把它转换成一个数组来计算irr。排序和groupby函数按预期工作,但我似乎无法避免这个错误。我看了这个{a1},但它似乎不适用于我的情况
我试图传递一个列表、数据帧和熊猫表,但函数正在寻找一个数组,所以这就是我发送它的内容。在此方面的任何帮助都将不胜感激
谢谢
This is the dataset produced as the flows_by_year variable
sum
EffectiveDate
2017 -3660000.0
2018 -5520000.0
2019 -2460213.0
2020 1600000.0
import pandas as pd
import sqlite3
from sqlite3 import Error
import numpy_financial as npf
def IRR(fund, pool):
database = r'C:\Transaction_History.db'
conn = create_connection(database)
sql_flows = ('''SELECT EFFECTIVEDATE, TRANSACTIONAMOUNT FROM Trans_Hist WHERE FUND=''' +
'"' + fund + '"' + ' AND POOL=' + '"' + pool + '"' +
' AND (TRANSACTIONTYPE = "Funding" OR TRANSACTIONTYPE = "Cash");')
flows = pd.read_sql_query(sql_flows, conn, parse_dates=['EffectiveDate'])
flows.sort_values(by=['EffectiveDate'], inplace=True, ascending=True)
flows_by_year = flows.groupby(flows['EffectiveDate'].dt.year)['TransactionAmount'].agg(['sum'])
print(flows_by_year)
irr = round(npf.irr(flows_by_year.values), 4) * 100
irr = f'{irr:,.2f}'
print(irr)
return irr
从docs开始,函数
numpy_financial.irr()
使用一维数组类对象。但是,您正在传递flows_by_year.values
,它是二维的。使用np.squeeze(flows_by_year.values)
或flows_by_year['sum']
代替演示:
相关问题 更多 >
编程相关推荐