我正在尝试遍历列表以获取结果列表,但第一个输出不正确。我的代码在下面列出
with open(csvpath, newline='') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
csv_header = next(csvreader)
total = 0
for row in csvreader:
#print(csvreader)
total = int(row[1]) -total
我跳过第一行,因为它包含标题。我基本上应该从(单元格b1)867884中减去(单元格B2)984655。但是由于我使用的是循环,所以total
中的第一个值是867884或(单元格B2-0)。
我也不能按照教练的指示使用熊猫。
我搜索了互联网和书籍,以找到正确的方法来找到答案,但没有成功。
结果应该是(单元格B1)867884减去(单元格b2)984655。但是由于我使用的是循环,total
中的第一个值是867884或(单元格B2-0)。
答案 0 :(得分:0)
您的行total = int(row[1]) -total
毫无意义,因为您在任何时候都只使用一列(row [1]部分)。这并不是事实,即使使用循环,您也可以执行以下操作:
with open(csvpath, newline='') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
csv_header = next(csvreader)
for row in csvreader:
print(int(row[0]) - int(row[1])) # use indexes to specify which column you need
我将把它留给您,以找到只获得B行的最佳方法;)
答案 1 :(得分:0)
我想我用这段代码可以帮助您。我粘贴了一个变量“ last”,该变量将先前的迭代置于for循环之外,并在循环运行后分配它。这个问题并不干净,但希望您可以解决这个问题。
with open('convertcsv.csv', newline='') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
# csv_header = next(csvreader)
cvsfile = csvreader
last = 0
for value in csvreader:
b1 = int(value[1])
b2 = last
if last == 0:
next
total = b1 - b2
print(total)
last = int(value[1])