如何在Python中的csv文件的不同行之间进行计算

时间:2015-01-28 03:21:02

标签: python-3.4

如果我有这个csv数据: (顺便说一下,我使用的是Python-3.4)

['20150101','2','1']          # row 0
['20150102','10','3']         # row 1
['20150103','4','2']          # row 2
['20150104','5','4']          # row 3
['20150105','12','6']         # row 4
....

我想:

  1. 乘以(在伪代码中)行[1]的数据[2](['20150102','10','3'中为'3'),行数据[2] [0](['20150101','2','1']中的'1')和
  2. 迭代计算继续(在伪代码中)行[2]的数据[2] *行[1]的数据[2],行[3]的数据[2] *数据[2]行[2]的数据[2],行[3]的数据[2],等等直到行[-1]的数据[2] *行[-2]的数据[2] ],
  3. 我该怎么办?

    我的实验:

    import csv
    f = open('file.csv','r')
    r = csv.reader(f)
    for i, n in enumerate(r):
        print(int(n[1])*int(n[2]))
    

    ...仅计算同一行内的数据。

    但我需要做的是使用来自行[i-1]的数据(即来自前一行的数据)计算row [i]中的数据,然后将整个文件的计算迭代到行[-1](最后一行)。

    注意: 我不想为此导入任何模块(除了用于打开和读取文件的csv)。 如果可能的话,用尽可能少的行编写代码。 不要担心计算结果将在何处或者随着迭代的进行它是否会不断变化(它可以附加到列表或写入单独的csv文件等,但这不是问题)

1 个答案:

答案 0 :(得分:0)

您必须在变量中创建Python列表,然后在将列的数据附加到列表时循环遍历行。循环后,循环遍历列表以执行计算。

例如,如果您想将每行第2列中的所有数字相乘:

import csv
f = open('file.csv','r')
r = csv.reader(f)
myData = []
for i, n in enumerate(r):
    myData.append(int(n[1])
product = 1
for num in myData:
    product *= num