我开发了一个函数来聚合每个给定队列的总人口,并在文件中给出。此功能目前被使用两次。一次获得总[实际]人口,一次获得“病例”总数。我遇到了一个问题,该函数没有读取到“案例”文件的末尾。我实现了一个行计数器,它打印迭代的行数。人口档案计数器输出为 933,案例档案计数器输出为 911,这意味着它没有读取底部的 22 个案例。有人知道为什么会这样吗?
这是我定义的函数:
def newPopCount(filename, fileheader):
rowCount = 0 # Row counter
import csv
popholder = []
cohorts = []
print (len(fileheader))
for i in range(3, len(fileheader)):
cohorts.append(fileheader[i])
for i in range(len(cohorts)):
popholder.append(0)
popcsv = open(filename, 'r', newline = '')
popreader = csv.reader(popcsv, delimiter = ',')
for row in popreader:
rowCount += 1
counter = 0
if row[0] == fileheader[0]:
continue
else:
for i in range(3, len(fileheader)):
popholder[counter] += int(row[i])
counter += 1
popcsv.close()
print (rowCount) # Print row counter
return popholder
顺便说一句:fileheader
是从另一个函数中获得的,就像它听起来的那样——文件的标题。此外,索引开始于3
因为文件中的第一个条目是邮政编码、x 坐标和 y 坐标。
如果有人有任何想法,请分享!
这是新的案例文件,其中的数据是用逗号正确分隔的。还有第二个文件,其中包含数据原始状态的示例。这些数据在主函数调用中聚合,生成我们实际讨论的文件:案例
我还决定包含用于获取标题的代码。我通常通过设置一个等于它的变量来调用它:thisHeader = getHeader('Cases.csv')
然后调用另一个函数caseRecord = newPopCount('Cases.csv', thisHeader)
这是getHeader
功能:
`def getHeader(file):
import csv
headername = None
charList = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '+', '+', "'", '"', '{', '}', '[', ']', '?', '.', ',', '<', '>', '/', '~', '`', '-', '_']
headercsv = open(file, 'r', newline = '')
headerreader = csv.reader(headercsv, delimiter = ',')
for row in headerreader:
if row[0][0] in charList and row[1][0] in charList:
headername = row
headercsv.close()
return headername`
再次感谢您的观看!