0
我已经有了一个具有不同数据格式的.csv文件,我试图使用同一列上的值进行操作。在csv中过滤特定行,记录上一个值
我的csv文件是这样的:
"int","float","stirng", more data
例子:
"2","1.378","Johnny"
"1","1.379","Walker"
"5","1.380","Jack"
"8","1.700","Daniels"
"8","1.710","Baileys"
"8","1.381","Monkey"
"8","1.711","Shoulder"
"8","1.383","Captain"
"8","1.385","Morgan"
"8","1.392","Drinks"
More rows
我想在第二列减去值,如果它们的区别在于> X。 (只有那些,我不在乎别人)。
我迄今为止代码:
with open ('input.csv', 'r') as file, open ('output.csv', 'w') as f_out:
readCSV = csv.reader(file)
writeCSV = csv.writer(f_out, lineterminator='\n')
last = None
for row in readCSV:
datalat = float(row[1])
if last is not None:
#print("difference -> %f" %(datalat-last))
outp = (datalat-last)
if outp <= 0.02:
writeCSV.writerow(row)
last = datalat
输出看起来像:
5,1.380,Jack
8,1.710,Baileys
8,1.381,Monkey
8,1.383,Captain
8,1.385,Morgan
8,1.392,Drinks
但我想它是:
"2","1.378","Johnny"
"1","1.379","Walker"
"5","1.380","Jack"
"8","1.381","Monkey"
"8","1.383","Captain"
"8","1.385","Morgan"
"8","1.392","Drinks"
所以应该做的是只写入行数小于0.02的差异,如果有一个差异较大的行丢弃它,然后比较下一行到la st书写的行,而不是最后一个被丢弃的行。
你不更新'last'随时随地 –
@MosesKoledoye对不起,我错过了线,而复制我的代码。更新。 – David