如何在计算步骤中解决此属性错误?

时间:2019-08-22 14:28:41

标签: python

我正试图确定贷款组合中哪些贷款超出了FHFA县贷款限额,以预测研究即将进行的法律变更的影响。我使用的代码版本只有一小部分(14k贷款)样本集,但是导入完整组合(560万)时,该代码不起作用。我绝对是Python的新手,我的经验仅限于SAS和R,这确实很生疏。

由于我无权访问实时数据,因此我导入的数据块大小为5k,这缓解了内存问题。并且我已经从FHFA网站导入了贷款限额数据,并为年,州和县代码创建了字典。

我还使用了pd.to_datetime()和.notnull()来尝试从数据和县域中删除空值。

def loan_calculation_new(row):
 year = row['PROCESSED_DATE'].year
 if row['PROCESSED_DATE'].month > 9:
    year += 1

 state_dict = year_dict[year]

 if row['FIPS_STATE_CODE'] not in state_dict:
    print("No State Code")
    return None

 county_dict = state_dict[row['FIPS_STATE_CODE']]
 if row['FIPS_COUNTY_CODE'] not in county_dict:
    limit = 485300

 return   
 limit = county_dict[row['FIPS_COUNTY_CODE']]
 limit > row['MTGE_LOAN_AMOUNT'].astype(int)

尝试运行计算时,我不断收到此错误:

AttributeError: ("'str' object has no attribute 'year'", 'occurred at index 0')

我想知道问题出在我的数据被划定管道,而不被解释为日期。该示例是.csv文件,似乎可以正常工作。

2 个答案:

答案 0 :(得分:0)

看来PROCESSED_DATE是字符串,因此您需要转换为日期时间

如果数据框中的行,您可以执行以下操作:

df['PROCESSED_DATE'] = pd.to_datetime(df['PROCESSED_DATE'])

答案 1 :(得分:0)

import datetime

def loan_calculation_new(row):
 year = datetime.strptime(row['PROCESSED_DATE'], "<EXPECTED FORMAT>").year
 if row['PROCESSED_DATE'].month > 9:
    year += 1
 ...