如何使用Python(不允许)循环浏览csv文件中的列,并找到每行中值之间的差异?

如何使用Python(不允许)循环浏览csv文件中的列,并找到每行中值之间的差异?,python,loops,csv,Python,Loops,Csv,我有一个CSV文件,如下所示: Values Dates 10 3/17 20 4/17 40 5/17 我的目标是循环遍历“Values”列,找出每行之间的差异,作为奖励,找出行之间的平均差异。我熟悉excel的VBA代码,在其中我只使用I-(I-1),但这不能很好地转换为Python。到目前为止,我的代码如下所示: import csv import os changes = [] os.path.join

我有一个CSV文件,如下所示:

    Values   Dates
      10      3/17
      20      4/17
      40      5/17
我的目标是循环遍历“Values”列,找出每行之间的差异,作为奖励,找出行之间的平均差异。我熟悉excel的VBA代码,在其中我只使用I-(I-1),但这不能很好地转换为Python。到目前为止,我的代码如下所示:

import csv
import os 

changes = []

os.path.join("Path", "To", "File")
with open(file) as dFile:
    reader = csv.reader(dFile)
    next(reader)

    for row in reader:
        change = row[0] - (row-1)[0]
        changes.append(change)

我真的没想到这会起作用,但不知道如何与循环中的前一行交互。有什么想法吗?

为了完整起见:

我只想使用I-(I-1),但这不能很好地转换为Python

这可以转换为Python,但您必须首先创建一个行列表:

with open(file) as dFile:
    reader = csv.reader(dFile)
    next(reader)

    rows = list(reader)
    for i in range(1, len(rows)):
        change = rows[i][0] - rows[i-1][0]
        changes.append(change)

这就是为什么链接问题中提出的基于生成器的解决方案通常更好。

您可以在for循环之前再添加一个变量(
prev\u row
):

changes = []
with open('sample.csv') as dFile:
    reader = csv.reader(dFile)
    next(reader)

    prev_row = 0
    for row in reader:
        change = int(row[0]) - prev_row
        prev_row = int(row[0])
        changes.append(change)
结果将是:

changes = [10, 10, 20]

是的,你明白了,我唯一需要从这段代码中更改的是这一行:
change=int(rows[I][0])-int(rows[I-1][0])
谢谢你的帮助!也有用,谢谢!这么简单的解决办法,我觉得我应该想到的,哈哈