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