Python:导入csv,使用特定单元格进行数学运算,将新列输出到新的(或相同的)CSV

时间:2015-04-22 17:06:54

标签: python csv import export

我已经做了好几天 -

我的CSV看起来像:

COL A || COL B || COL C ||

0.1 || 0.0 || 0.5 ||

0.4 || 60 || 0.6 ||

0.3 || -60 || 0.5 ||

...

0.2 || -60 || 0.4 ||

有25行数字 - 它们都略有不同。 我想使用python导入这个CSV,做一些细微的数学运算(例如,在单元格A1和C1之间找到平均值)然后将新的COLUMN打印到一个全新的CSV文件或者将新的COLUMN添加到当前的开头或(甚至重复的文件。 我知道实际的数学部分很简单。这是导入,操作,然后导出一个我无法获得的新COLUMN。

这是我尝试过的: 1)首先我尝试导入csv,将其更改为列表,读取我需要的列然后导出到新的csv。我遇到的问题是,当我导出到CSV时,它不会创建列。它只是添加了一个看起来像(0.111,1.002,..)的单个单元格。

import csv
ofile=open('duplicate.csv', "w")
writer=csv.writer(ofile, delimiter=',')

with open('/Users/myCSV.csv', 'rb') as f:
    mycsv = csv.reader(f)
    mycsv = list(mycsv)
    avg=[]
    high=[]

    #average number
    for i in range(1,25):
        x=float(mycsv[i][16])
        avg.append(x)
    #print avg
    average=zip(avg)    

    #highest number
    for i in range(1,25):
        x=float(mycsv[i][15])
        high.append(x)
    #print high
    highest=zip(high)    
    print highest

writer.writerow([average,highest])

ofile.close()

2)然后我尝试为重复文件创建一个新列,并在该列中添加信息。我从另一个类似的问题得到了类似的版本。这只是不起作用 - 我得到错误“TypeError:只能分配一个可迭代的”

import csv
infilename = r'/Users/myCSV.csv'
outfilename = r'/Users/myCSV_duplicate.csv'

with open(infilename, 'rb') as fp_in, open(outfilename, 'wb') as fp_out:
    reader = csv.reader(fp_in, delimiter=",")
    writer = csv.writer(fp_out, delimiter=",")

    headers = next(reader)  # read title row
    headers[0:0] = ['avg']
    writer.writerow(headers)

    for row in reader:
        for i in range(1,25):
            mycsv=list(reader)
            row[0:0] = float(mycsv[i][15])
        writer.writerow(row)

我一直在这个DAYS可以有人请帮忙!?!?!?

我在MATLAB中编写了所有这些内容,但需要将其转移到Python ... MATLAB更容易理解。

1 个答案:

答案 0 :(得分:1)

使用select * from table where zip = @zip and name = @name and id = @id 。这就是它的设计目标。

pandas