上课时间python:keyerror line 2897,在get\ loc raise keyerror(钥匙)from err

xmd2e60i  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(335)

请帮帮我!!!!我创建了一个类,它接受csv文件的数据来执行计算并生成一个新报告。代码如下:

import pandas as pd
class Asset:
def __init__(self, filename):
    #read csv data
    self.data=pd.read_csv(filename)
    self.filename=filename
    self.data=self.data[['month','loan_number','Type','UPB','current_interest_rate','p']]
def get_prn_bal(self,p, UPB):
    return p * UPB

def get_int(self, prn_bal, current_interest_rate, month, DQ_values):
    return prn_bal*(current_interest_rate/12 *(month+DQ_values+1))

def get_cf(self,prn_bal, current_interest_rate, month, DQ_values):
    return prn_bal*(1+ current_interest_rate/12 *(month+DQ_values+1))

def get_data(self):
    self.data['Prn_Bal'] = self.data.apply(lambda x: self.get_prn_bal(x['p'], x['UPB']), axis=1)
    self.data['Interest'] = self.data.apply(lambda x: self.get_int(x['Prn_Bal'],x['current_interest_rate'], 
                                                                             x['month'], x['DQ']), axis=1)
    self.data['CF'] = self.data.apply(lambda x: self.get_cf(x['Prn_Bal'],x['current_interest_rate'],
                                                                      x['month'], x['DQ']), axis=1)

    f = open(self.filename,"w+")
    f.truncate()
    f.close()
    self.data.to_csv(self.filename, header=True, index=False)

df=Asset("test.csv")
df.get_data()

python显示了一个错误:
!runcell(0,'c:/users//desktop/untitled2.py')回溯(最后一次调用):
文件“c:\users\anaconda3\lib\site packages\pandas\core\index\base.py”,第2895行,在get\u loc return self.\u engine.get\u loc(casted\u key)中
文件“pandas\u libs\index.pyx”,第70行,在pandas.\u libs.index.indexengine.get\u loc中
文件“pandas\u libs\index.pyx”,第101行,在pandas.\u libs.index.indexengine.get\u loc中
文件“pandas\u libs\hashtable\u class\u helper.pxi”,第1675行,在pandas.\u libs.hashtable.pyobjecthashtable.get\u item中
文件“pandas\u libs\hashtable\u class\u helper.pxi”,第1683行,在pandas.\u libs.hashtable.pyobjecthashtable.get\u item中
keyerror:'dq'
上述异常是以下异常的直接原因:
回溯(最近一次呼叫):
文件“c:\users\desktop\untitled2.py”,第45行,在df.get\u data()中
文件“c:\users\desktop\untitled2.py”,第32行,在get\u data self.data['interest']=self.data.apply中(lambda x:self.get\u int(x['prn\u bal'],x['current\u interest\u rate']),
文件“c:\users\anaconda3\lib\site packages\pandas\core\frame.py”,第7548行,在apply return op.get\u result()中
文件“c:\users\anaconda3\lib\site packages\pandas\core\apply.py”,第180行,在get\u result return self.apply\u standard()中
文件“c:\users\anaconda3\lib\site packages\pandas\core\apply.py”,第271行,在apply\u standard results中,res\u index=self.apply\u series\u generator()
文件“c:\users\anaconda3\lib\site packages\pandas\core\apply.py”,第300行,在apply\series\u generator results[i]=self.f(v)中
文件“c:\users\desktop\untitled2.py”,第33行,x['month'],x['dq']),轴=1)
文件“c:\users\anaconda3\lib\site packages\pandas\core\series.py”,第882行,在getitem return self.\u get\u value(key)中
文件“c:\users\anaconda3\lib\site packages\pandas\core\series.py”,第989行,在\u get\u value loc=self.index.get\u loc(标签)中
文件“c:\users\anaconda3\lib\site packages\pandas\core\indexes\base.py”,第2897行,在get\loc raise keyerror(key)from err中
keyerror:'dq'

8hhllhi2

8hhllhi21#

在下面的行中,您将传递str值为'month'和'dq'的列表:

self.data['Interest'] = self.data.apply(lambda x: self.get_int(x['Prn_Bal'],x['current_interest_rate'], 
                                                                             ['month'], ['DQ']), axis=1)

请尝试以下操作:

self.data['Interest'] = self.data.apply(lambda x: self.get_int(x['Prn_Bal'],x['current_interest_rate'], 
                                                                             x['month'], x['DQ']), axis=1)

相关问题