我有一个带有日期,现金,汇率,名称列的数据框。当我尝试运行下面提到的代码时,出现错误“ ValueError:值的长度与索引的长度不匹配”。它还给出警告,例如“ RuntimeWarning:对函数的调用次数已达到maxfev =400。” 我该如何解决这个错误?
from scipy.optimize import fsolve
def xnpv(rate, values, dates):
if rate <= -1.0:
return float('inf')
d0 = dates.min() # or min(dates)
return sum([ vi / (1.0 + rate)**((di - d0).days / 365.0) for vi, di in zip(values, dates)])
def xirr(values, dates):
try:
return scipy.optimize.newton(lambda r: xnpv(r, values, dates), 0.0)
except RuntimeError: # Failed to converge?
return fsolve(lambda r: xnpv(r, values, dates), 3) #error comes from here
def f(x):
x["XNPV"] = xnpv(0.1, x["Cash"], x['Date'])
x["XIRR"] = xirr( x["Cash"], x['Date'])
return x
f2 = f1.groupby('RATE').apply(f)