问题描述
这是我的代码,我不断遇到关键错误。我已经在我的班级的初始化代码中打开了该文件,但是问题是我一直在为此文件获取KeyError。我知道当我在函数中打开文件时它可以工作,但是当我在函数外打开文件时它却无法工作并且出现KeyError。如果您需要完整的代码,请告诉我。除了导入csv,我不能为此使用pandas或任何其他模块。我知道这样做会更容易:)
def calc_avg(self,specific,filter,logic,threshold):
'''calculates avg for the column determine by specific based off the filter parameters given by
filter,threshold'''
if isinstance(threshold,str):
threshold = float(threshold)
running_sum = 0
running_count = 0
for row in csv.DictReader(self.load_data):
value = int(row[filter])
if logic == 'lt' and value < threshold:
include = True
elif logic == 'gt' and value > threshold:
include = True
elif logic == 'lte' and value <= threshold:
include = True
elif logic == 'gte' and value >= threshold:
include = True
else:
include = False
if include:
running_sum += int(row[specific])
running_count += 1
return (round(running_sum / running_count,2))
命令是
print(csv_data.calc_avg("Length_of_stay",filter="SOFA",logic="lt",threshold="15"))
我得到的错误是:
value = int(row[filter])
KeyError: 'SOFA'
Sample Data:
RecordID SAPS-I SOFA Length_of_stay
132539 6 1 5
132540 16 8 8
132541 21 11 19
132545 17 2 4
132547 14 11 6
132548 14 4 9
132551 19 8 6
132554 11 0 17
完整代码:
class HWReader():
def __init__(self,load_data):
'''initializer that sets filename as a parameter that can be used within all functions'''
self.load_data = open(load_data,"r")
def get_saps(self,record_name):
'''finds the saps score for a record name'''
for row in csv.DictReader(self.load_data,delimiter = ','):
if row['RecordID'] == record_name:
return (row['SAPS-I'])
def calc_avg(self,str):
threshold = float(threshold)
avg_file = csv.DictReader(self.load_data)
running_sum = 0
running_count = 0
for row in avg_file:
value = int(row[filter])
if logic == 'lt' and value < threshold:
include = True
elif logic == 'gt' and value > threshold:
include = True
elif logic == 'lte' and value <= threshold:
include = True
elif logic == 'gte' and value >= threshold:
include = True
else:
include = False
if include:
running_sum += int(row[specific])
running_count += 1
return (round(running_sum / running_count,2))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)