import csv
data = {}
f = open("train.csv")
csv_f = csv.reader(f)
labels = next(csv_f)
for i in range(len(labels-1)):
a = []
for row in csv_f:
a += row[i]
data [labels[i]] = a
我正在上面的代码尝试读取csv文件并将列放入字典中,第一部分作为标签,第二部分作为值的arra。这适用于我的第一列,我的数据集是'ID',但在此之后它停止工作 - 它只是将a
数组留空。我做了一些调试,发现它正在做外部for循环然后是内部循环,但是当它执行外部for循环的第二次运行时,它只是跳过内部for循环。它也为后来的所有人做到了。
为什么这样做?
如何修复我的代码以使其停止?
答案 0 :(得分:0)
就像凯文上面说的那样,我认为问题在于,在第一次通过csv_f进行迭代后,你必须将csv阅读器重置回文件的开头。此算法要求您多次解析整个文件以收集所有数据。更有效的算法将逐行解析文件。我没有检查过这段代码,所以它可能不是100%,但希望它指出你正确的方向。
import csv
data = {}
f = open("train.csv")
csv_f = csv.reader(f)
isLabelRow = True
for row in csv_f:
print "Processing row : " + str(row)
if isLabelRow:
# Get labels from first row of data
labels = []
isLabelRow = False
# Initialize data "columns"
for label in row:
print "Processing label : " + label
labels.append(label)
data[label] = [] # empty array
else:
# Add each item in the row to the appropriate "column" in data
for i in range(len(row)):
data[labels[i]].append(row[i])