1 回答

TA貢獻1806條經驗 獲得超5個贊
您可以使用 apply 為每行計算一次此值,因此只有無效行才會是 nan,而不是整個結果。
import pandas as pd
import numpy_financial as npf # i get a warning using np.rate
i = {
'LoanAmount': [5_000,20_000,15_000, 50_000.0, 14_000,1_000_000,10_000],
'LoanTerm': [72, 12,60, 36,72,12,-1],
'Instalment': [336.0,5000.0,333.0,0.0,-10,1000.0,20],}
df = pd.DataFrame(i)
df.apply(lambda x: npf.rate(nper=x.LoanTerm,pv=x.LoanAmount,pmt=-1*x.Instalment,fv=0),axis=1)
對于大型數據集,這會更慢,因為您無法利用矢量化。
您還可以將數據框條目過濾為僅有效值。很難重現無效的內容,因為您沒有共享輸入,但在我上面的示例中,貸款期限和分期付款都必須 > 0。
valid = df.loc[(df.Installment > 0) & (df.LoanTerm > 0)]
npf.rate(nper=valid.LoanTerm,pv=valid.LoanAmount,pmt=-1*valid.Installment,fv=0)
添加回答
舉報