我有一组 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 文件,但它们都是空的。问题似乎是我的第二个“if”语句永远不会正确:控制台永远不会打印“Ok!” 我已经尝试了一些故障排除,并且相当沮丧。或许最郁闷的是,程序结束后,如果我进入
rockid==newentry
控制台返回“真”,所以在我看来,我应该至少得到一个“好的!” 为最后的迭代。谁能帮我找出问题所在?
此外,由于我的 if 语句永远不会正确,因此我附加“new_data”的方式也可能存在问题。