所以我有很多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的脚本。有人可以告诉我应该如何编辑脚本以及要添加哪些模块?
答案 0 :(得分:3)
您需要熟悉csv
模块:http://docs.python.org/library/csv.html
答案 1 :(得分:0)
假设您知道每列的排列和数据类型,最好的选择是NumPy和loadtxt功能。
使用它的代码看起来像这样:
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']
f4
和i4
引用每列的数据类型 - f4
是32位浮点数,i4
是32位整数。对于64位整数,64位浮点数和N长度字符串,其他选项为i8
,f8
或aN
。
一个警告 - 如果您的数据包含包含逗号的字符串,则loadtxt函数无法很好地处理它们。在这种情况下,您必须按照其他海报的建议使用csv
模块。