-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathcsv_merger.py
69 lines (46 loc) · 1.44 KB
/
csv_merger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# one solution to end of tutorial...
import csv
class CSVMerger():
def merge(self, debt_input, inflation_input, credit_input, output):
countries = []
fdebtreader = open(debt_input, 'rU')
debtreader = csv.DictReader(fdebtreader)
for row in debtreader:
countries.append(row["Country Code"])
fcreditreader = open(credit_input, 'rU')
creditreader = csv.DictReader(fcreditreader)
finflationreader = open(inflation_input, 'rU')
inflationreader = csv.DictReader(finflationreader)
fields = [
"Country",
"Moodys",
"S&P",
"Fitch"
"2012-debt",
"2012-inflation",
"2013-debt",
"2013-inflation"
]
fwriter = open(output, 'w')
writer = csv.DictWriter(fwriter, fields, extrasaction="ignore")
writer.writeheader()
for country in countries:
new_row = {"Country": country}
for row in creditreader:
if row['ISO code'] == country:
print "Got a match: " + country
new_row["S&P"] = row["S&P Rating"]
new_row["Moodys"] = row["Moody's rating"]
new_row["Fitch"] = row["Fitch Rating"]
fcreditreader.seek(0)
for row in debtreader:
if row['Country Code'] == country:
new_row['2013-debt'] = row["2013"]
new_row['2012-debt'] = row["2012"]
fdebtreader.seek(0)
for row in inflationreader:
if row['Country Code'] == country:
new_row['2013-inflation'] = row["2013"]
new_row['2012-inflation'] = row["2012"]
finflationreader.seek(0)
writer.writerow(new_row)