熊猫:计算贷款现金流量的内部收益率

时间:2018-09-20 09:57:13

标签: python pandas irr

我有一个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”代表已拖欠的贷款,因此永久性预期不会有进一步的现金流量;

Loans DF

我尝试了多种方法。 (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)      

0 个答案:

没有答案