我有这个功能:
import pandas as pd
import numpy as np
import numpy_financial as npf
from datetime import datetime
from dateutil.relativedelta import relativedelta
def amortisation_schedule(accountno,amount, annualinterestrate, paymentsperyear, years,commission=0,LoanApplicationDate=datetime.today(),ReportStartDate=datetime.today(),ReportEndDate=datetime.today()):
df = pd.DataFrame({ 'Schedule_No' :[(i+1) for i in range(paymentsperyear*years)],
'Repayment_Date' :[(LoanApplicationDate+ relativedelta(months=i+1)) for i in range(paymentsperyear*years)],
'Principal' :[npf.ppmt(annualinterestrate/paymentsperyear, i+1, paymentsperyear*years, amount) for i in range(paymentsperyear*years)],
'Interest' :[npf.ipmt(annualinterestrate/paymentsperyear, i+1, paymentsperyear*years, amount) for i in range(paymentsperyear*years)],
'Fee':commission/(paymentsperyear*years) if commission>0 else 0 })
df['Instalment'] = df.Principal + df.Interest+df.Fee
df['Balance'] = amount + np.cumsum(df.Principal)
df['FeeCarryingAmt'] =commission - np.cumsum(df.Fee)
df['Account_no']=accountno
df['EIR'] =npf.rate(paymentsperyear*years,df.Principal + df.Interest+df.Fee ,amount,0)*12
return(round(df,3))
尝试编写一个函数,通过获取数据帧输入来实现以下功能
df1=amortisation_schedule('xxx',-10000,0.125, 12, 2,1000,datetime(2018,4,4),datetime(2021,1,1),datetime(2021,3,31))
df2=amortisation_schedule('yyy',-30000,0.125, 4, 3,1500,datetime(2018,4,4),datetime(2021,1,1),datetime(2021,3,31))
df3=amortisation_schedule('zzz',-25000,0.125, 3, 5,1600,datetime(2018,4,4),datetime(2021,1,1),datetime(2021,3,31))
df4=amortisation_schedule('ccc',-60000,0.125, 6, 6,2000,datetime(2018,4,4),datetime(2021,1,1),datetime(2021,3,31))
dfm=pd.concat([df,df1, df2, df3], ignore_index=True)
dfm
我有成千上万的这样的记录,我需要以这种格式处理
如果您有一个
DataFrame
函数,其中包含函数的输入值,则可以将其转换为记录字典,并使用**kwargs
对函数进行求值。下面的代码提供了一个简单的演示:相关问题 更多 >
编程相关推荐