我有一个Pandas现金流量数据框架,长度无法预测。它们的范围在几个月到30多个月之间,每月不等,每个月都有一个列,其中包含该月的现金流量信息。我需要为每笔贷款计算IRR,定义如下:
Definition of IRR, where r is "IRR" when NPV is set to 0.
下面是一个指向df的示例的链接,其中我有“ months_remaining”,初始流出和可变期间(2月19日至12月29日之间)的一系列现金流量。 “ S”表示已偿还的贷款,即已到期并偿还了全部金额。 “ 0”代表已拖欠的贷款,因此永久性预期不会有进一步的现金流量;
我尝试了多种方法。 (1)使用iterrows为每一行创建一个numpy数组,然后尝试使用numpy.irr,但是仍然仅在可变时间段内计算IRR的问题仍然存在(我需要识别现金流何时以“ S”停止并停止计算(2)避免采用逐行方法,并尝试在Pandas中进行计算,再次将一些“ S”贷款和某些列中的正常现金流混合使用此方法。
Cell which I am currently working in.
感谢您提供的任何帮助。
[EDIT]使用for循环的工作代码示例
for row in irr_array:
LoanID=row[1]
Tier=row[2]
row=row[2:2000]
if "S" in row:
new_array = [i for i in row if i is not "S"]
irr_results["IRR"]= (pd.Series(round(irr(new_array),3)))
irr_results["LoanID"]=(pd.Series(LoanID))
irr_results["Tier"]=(pd.Series(Tier))
results=irr_df.append(irr_results)
if 0 in row:
irr_results["IRR"]= 0
irr_results["LoanID"]=(pd.Series(LoanID))
irr_results["Tier"]=(pd.Series(Tier))
results=irr_df.append(irr_results)