我有一个csv
文件,csv_file.csv
,其中每个状态有多个记录,并且状态用一个id标识。样本是这样的:如何将状态码从一个csv文件映射到python中另一个csv文件的状态名称?
state_id,year,value
01,2012,8.0
01,2012,8.1
01,2012,8.0
01,2012,7.7
01,2013,7.3
01,2013,7.0
01,2013,7.0
我想在上面数据集state_id
转换成相应的state_name
和记录写入到另一个csv
文件,output.csv
,使每个国家的所有value
领域进来一个行和输出变为:
Alabama,8.0,8.1,8.0,7.7,7.3,7.0,7.0
Alaska,8.1,8.1,8.0,7.4,7.25,7.6,7.5
换做我还有一个csv
文件,state.csv
映射,与映射的详细信息:
我写了这个代码,但这个似乎只只转换4条(前4记录state_id
01
和year
2012
)的csv_file.csv
的,当我打开Output.csv
我只看到4条记录,并且也为他们的value
字段重复。我当前的代码是:
reader_csv = csv.reader(open('csv_file.csv', 'rb'))
reader_state = csv.reader(open('states.csv', 'rb'))
file_write = open('Output.csv', 'a')
writer = csv.writer(file_write)
for line in reader_csv:
for states in reader_state:
if line[0] == states[0]:
print line[0]+'='+states[1]
writer.writerow([states[1]]+[line[1]]+[line[2]])
break
file_write.close()
什么是我在这里做了错误,我该怎么做才能改变state_id
到state_name
映射?
让我们说,一个国家,从第1行csv_file出现5。你当前的代码也会读取第1行到第5行的states_csv(尽管你只希望他读取states_csv的第1行)。你会“放松”4个州。我正在编写解决方案。 – tomasyany