次のような一連のデータに 4 番目の列を書き込もうとしています
8000.5 16745 0.1257
8001.0 16745 0.1242
8001.5 16745 0.1565
8002.0 16745 0.1595
その特定のファイルで 2 番目の数値 (つまり 16745) がカウントされた回数を示します (変更されます。リストには数千のエントリがあります)。つまり、これがファイル全体の場合
8000.5 16745 0.1257 4
8001.0 16745 0.1242 4
8001.5 16745 0.1565 4
8002.0 16745 0.1595 4
私のコードの問題は書き込み段階にあるようで、辞書は機能し、csv.reader はファイルを印刷すると正常に読み取られますが、唯一の辞書キーを追加することになると (フィールド [1]) は16745 が -1 で、そのカウントがすべての行の 4 列目に出力されます。行ごとではなく、この値に対してのみ辞書と相互参照している理由がわかりません。
つまり、私は得る
8000.5 16745 0.1257 [count of -1 in column 2]
8001.0 16745 0.1242 [count of -1 in column 2]
8001.5 16745 0.1565 [count of -1 in column 2]
8002.0 16745 0.1595 [count of -1 in column 2]
どんな助けでも大歓迎です!
import numpy
import string
import csv
import sys
import os
time = []
water = []
itemcount ={}
global filename
filename = sys.argv[1]
f1 = open(sys.argv[1], 'rt')
for line in f1:
fields = line.split()
time.append(fields[0])
water.append(fields[1])
f1.close()
for x in water:
a = water.count(x)
itemcount[x] = a
writerfp = open('watout.csv', 'w')
writer = csv.writer(writerfp)
for row in csv.reader(open(filename, 'r')):
fields = line.split()
row.append(itemcount[fields[1]])
writer.writerow(row)
writerfp.close()