如何使用Python(不允许)循环浏览csv文件中的列,并找到每行中值之间的差异?
我有一个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
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])
谢谢你的帮助!也有用,谢谢!这么简单的解决办法,我觉得我应该想到的,哈哈