我要做的是读入csv文档并找到SN列中的所有值> 20,并创建一个只包含SN>行的新文件20.
我知道我需要这样做:
我能够做的是找到值为SN>的行。 20
import csv
import os
os.chdir("C:\Users\Robert\Documents\qwe")
with open("gdweights_feh_robert_cmr.csv",'rb') as f:
reader = csv.reader(f, delimiter= ',')
zerovar = 0
for row in reader:
if zerovar==0:
zerovar = zerovar + 1
else:
sn = row [11]
zerovar = zerovar + 1
x = float(sn)
if x > 20:
print x
所以我的问题是如何使用SN> 20并将其转换为新文件?
答案 0 :(得分:3)
将数据保存在列表中,然后将列表写入文件。
import csv
import os
os.chdir(r"C:\Users\Robert\Documents\qwe")
output_ary = []
with open("gdweights_feh_robert_cmr.csv",'rb') as f:
reader = csv.reader(f, delimiter= ',')
zerovar = 0
for row in reader:
if zerovar==0:
zerovar = zerovar + 1
else:
sn = row [11]
zerovar = zerovar + 1
x = float(sn)
if x > 20:
print x
output_ary.append(row)
with open("output.csv",'w') as f2:
for row in output_ary:
for item in row:
f2.write(item + ",")
答案 1 :(得分:0)
在代码中,通过行读取/循环非常复杂。它可以通过以下方式清理(并在Python中运行得更快):
with open('gdweights_feh_robert_cmr.csv', 'rb') as f:
output_ary = [row for row in f if float(row[11]) > 20]
使用列表理解([行为f])在python中进行了优化,因此它将更有效地执行。 AND ...你不必创建reader
数组,这将减少所需的内存,如果csv文件很大,也非常方便。
然后您可以按照其他答案的建议继续写出outout_ary。
希望这有帮助!