使用Python在CSV文件中对列进行乘法/除法

时间:2012-02-27 16:35:49

标签: python csv multiplying

所以我有很多CSV文件,每个文件中有6列数字。我想使用Python对每个CSV文件中的每一列执行一些操作(乘法,除法等)。

import csv

r = csv.reader(open('F:\python\sample.csv','rb'))

w = csv.writer(open('F:\python\sample_calib.csv','wb',buffering=0))

for row in r:
            a = (float(row[0])-0.0376)/-0.0717
            b = (float(row[1])-0.0376)/-0.0717
            c = float(row[2])/1000
            d = float(row[3])/1000
            e = float(row[4])/1000000
            f = float(row[5])/0.001178
            w.writerow([a,b,c,d,e,f])

所以我使用上面的这个小脚本来校准每一行,这对每个.csv文件都适用。现在,我想要做的就是在一个文件夹中运行200个FILES的脚本。有人可以告诉我应该如何编辑脚本以及要添加哪些模块?

2 个答案:

答案 0 :(得分:3)

您需要熟悉csv模块:http://docs.python.org/library/csv.html

答案 1 :(得分:0)

假设您知道每列的排列和数据类型,最好的选择是NumPyloadtxt功能。

使用它的代码看起来像这样:

import numpy as np
dtype = np.format_parser(['f4', 'f4', 'i4'], ['col1', 'col2', 'col3'], [])
array = np.loadtxt(path_to_file, dtype, delimiter=',')

然后你可以像这样对整个列进行操作。

output = array['col1'] + array['col2']

f4i4引用每列的数据类型 - f4是32位浮点数,i4是32位整数。对于64位整数,64位浮点数和N长度字符串,其他选项为i8f8aN

一个警告 - 如果您的数据包含包含逗号的字符串,则loadtxt函数无法很好地处理它们。在这种情况下,您必须按照其他海报的建议使用csv模块。