ファイルで指定されたコホートごとに、総人口を集計する関数を開発しました。この関数は現在 2 回使用されています。[実際の] 人口の合計を取得するために 1 回、「ケース」の総数を取得するために 1 回。関数が「cases」ファイルの最後まで読み取れないという問題が発生しています。反復された行数を出力する行カウンターを実装しました。ポピュレーション ファイル カウンターの出力は 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 座標であるため、インデックス作成は から開始されます。
誰かが何か考えを持っているなら、共有してください!
これは新しいケース ファイルで、今回は適切にカンマでデータが区切られています。データの元の状態の例を含む 2 番目のファイルもあります。このデータは、実際に話しているファイルを生成する main 関数呼び出しで集計されます。
また、ヘッダーを取得するために使用するコードを含めることにしました。私は通常、それに等しい変数を設定して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`
改めまして、ご覧いただきありがとうございます!