Это мой CSV do c. :
Product code,Year,Month,Measurement period,Rainfall amount
1a,1962,01,0,01
1s,1962,01,1,02
1d,1962,01,0,03
1f,1962,01,0,04
1z,1962,01,0,05
1x,1962,01,0,06
1c,1962,01,3,07
1q,1962,01,0,01
1w,1962,01,0,02
1e,1962,01,0,03
1r,1962,01,0,04
1t,1962,01,4,05
1y,1962,01,0,06
1k,1962,01,0,07
И это код:
import csv
path = r"C:\FEWS\Sample.csv"
fields = ['Product code','Year','Month','Measurement period','Rainfall amount']
output2 = r"C:\FEWS\Sample2.csv"
with open(path,'r') as x, open(output2, 'w', newline='') as output:
reader = csv.DictReader(x, fieldnames=fields)
writer= csv.DictWriter(output, fieldnames=fields)
for row in reader:
try:
if int(row['Rainfall amount']) > 1:
Measure_period = row['Measurement period']
for x in range(int(Measure_period) -1):
pass
# Update the previous rows
except ValueError:
pass
writer.writerow(row)
Что я пытаюсь сделать, это если период измерения больше 1 и, скажем, 3 изменить только количество осадков из предыдущих 3 строк, предшествующих текущей строке, и их количество осадков равняется текущей строке.
Вывод должен быть таким:
Product code,Year,Month,Measurement period,Rainfall amount
1a,1962,01,0,01
1s,1962,01,1,02
1d,1962,01,0,03
1f,1962,01,0,07
1z,1962,01,0,07
1x,1962,01,0,07
1c,1962,01,3,07
1q,1962,01,0,05
1w,1962,01,0,05
1e,1962,01,0,05
1r,1962,01,0,05
1t,1962,01,4,05
1y,1962,01,0,06
1k,1962,01,0,07