【发布时间】:2020-02-01 19:20:09
【问题描述】:
这是我的 CSV 文档。 :
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
【问题讨论】:
标签: python csv python-3.6