【问题标题】:Is there a better way to create a loan amortization table in Python?有没有更好的方法在 Python 中创建贷款摊销表?
【发布时间】:2020-10-28 18:33:37
【问题描述】:

我正在尝试创建一个简单的贷款摊销。出于某种原因,我的代码在几个时期后停止工作。从 2006 年 4 月 30 日开始,我的代码不识别期初余额,不计算此余额的利息,也不计算期末余额。非常感谢任何建议。

import numpy as np
import pandas as pd
from datetime import datetime

data = pd.DataFrame({'date': pd.date_range("2006-01-01", "2011-12-31", freq='M')})
data['date'] = pd.to_datetime(data['date'])
data.set_index(data['date'], inplace=True)

orig_balance = 1000000
interest_rate = .06
day_count = 30/360
data['monthly_principal_pmt'] = 10000
date_cut_off = '2006-01-31'

data['beginning_balance']  = 0

for row in data:
    
    data.at[date_cut_off,'beginning_balance'] = orig_balance
    
    data['ending_balance'] = np.maximum(data['beginning_balance'] - data['monthly_principal_pmt'],0)
    
    data['monthly_interest_pmt'] = data['beginning_balance'] * day_count * interest_rate 
    
    data['beginning_balance'] = data['ending_balance'].shift()

【问题讨论】:

  • 你在行上迭代并且不使用它,正常吗? row 实际上也是列名,这就是迭代 DF 时发生的情况

标签: python pandas for-loop amortization


【解决方案1】:

感谢您的帮助!这现在有效:

import numpy as np
import pandas as pd
from datetime import datetime

data = pd.DataFrame({'date': pd.date_range("2006-01-01", "2011-12-31", freq='M')})
data['date'] = pd.to_datetime(data['date'])
data.set_index(data['date'], inplace=True)

orig_balance = 1000000
interest_rate = .06
day_count = 30/360
data['monthly_principal_pmt'] = 10000
date_cut_off = '2006-01-31'

data['beginning_balance']  = 0

for yr in range(1,72):
    
    data.at[date_cut_off,'beginning_balance'] = orig_balance
    
    data['ending_balance'] = np.maximum(data['beginning_balance'] - data['monthly_principal_pmt'],0)
    #data['ending_balance'] = data['beginning_balance'] - data['monthly_principal_pmt']

    
    
    data['monthly_interest_pmt'] = data['beginning_balance'] * day_count * interest_rate 
    
    data['beginning_balance'] = data['ending_balance'].shift()

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 2019-07-25
    • 2021-12-16
    • 2010-09-09
    • 2014-07-06
    • 2010-12-04
    相关资源
    最近更新 更多