csv ファイルのセットと、別の csv ファイル GroundTruth2010_edited_copy.csv があります。これには、ファイル セットの行の最後に追加したい情報が含まれています。ファイルには、地質サンプルを説明する情報が含まれています。GroundTruth2010_edited_copy.csv を含むすべてのファイルについて、各行にはサンプルを識別する識別用の「rockid」があり、行の残りの部分にはサンプルのさまざまなパラメーターが記述されています。GroundTruth2010_edited_copy.csv から対応する情報を csv ファイルのセットに追加したいと考えています。つまり、行に同じ「rockid」がある場合、それらを新しい csv ファイルの新しい行に結合したいと考えています。したがって、セット内の元の csv ファイルごとに新しい csv ファイルがあります。これが私のコードです。
import os
import csv
#read in ground truth data
csvfilename='GroundTruth/GroundTruth2010_edited_copy.csv'
with open(csvfilename) as csvfile:
rocreader=csv.reader(csvfile)
path=os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
if filename.endswith('.csv'):
#read csv files
r=csv.reader(open(filename))
new_data = []
for row in r:
rockid=row[-1]
for krow in rocreader:
entry=krow[0]
newentry=entry[:5] +entry[6:] #remove extra '0' from middle of entry
if newentry==rockid:
print('Ok!')
#append ground truth data
new_data.append([row, krow[1], krow[2], krow[3], krow[4]])
#write csv files
newfilename = "".join(filename.split(".csv")) + "_GT.csv"
with open(newfilename, "w") as f:
writer = csv.writer(f)
writer.writerows(new_data)
コードが実行され、新しい csv ファイルが作成されますが、それらはすべて空です。問題は、私の 2 番目の 'if' ステートメントが真にならないことです。コンソールに 'Ok!' が表示されません。少しトラブルシューティングを試みましたが、かなりイライラしました。おそらく最もイライラするのは、プログラムが終了した後、
rockid==newentry
コンソールは「True」を返すので、少なくとも 1 つの「OK!」を取得する必要があるように思えます。最後の繰り返しのために。誰が間違っているかを見つけるのを手伝ってくれますか?
また、私の if ステートメントは決して true にならないため、'new_data' を追加する方法にも問題がある可能性があります。