【问题标题】:How do I iterate through this list to get the right answer?如何遍历此列表以获得正确答案?
【发布时间】:2019-08-19 23:57:39
【问题描述】:

我正在尝试遍历列表以获取结果列表,但第一个输出不正确。我的代码如下所示

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)。

我也不能按照导师的规定使用 pandas 来解决这个问题。

我搜索了互联网和书籍以找到正确的方法来找到答案,但没有成功。

结果应该是(单元格 B1)867884 减去(单元格 b2)984655。但因为我使用的是循环,total 中的第一个值是 867884 或(单元格 B2 - 0)。

【问题讨论】:

  • 你循环基本上每次都否定总,并添加一个新值。我认为这不是您想要的,但您只使用了 csv 文件的一列。

标签: python list loops csv


【解决方案1】:

您的total = int(row[1]) -total 行实际上没有意义,因为您在任何时候都只使用一列(行[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 行;)

【讨论】:

    【解决方案2】:

    我想我用这段代码大部分时间都在帮助你。我坚持了一个变量'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])
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      相关资源
      最近更新 更多