Gegeven zijn twee CSV-bestanden, met als gedaante:
Voornaam; Familienaam; Data1; Data2; ...Hierbij zijn de headings
Data1
, Data2
, enz. placeholders (m.a.w. in de echte
bestanden staan andere hoofdingen). De headings 'Voornaam' en 'Familienaam' komen
als eerste en tweede hoofding in de twee bestanden voor.
In deze oefening construeren we een derde CSV-bestand dat de samenvoeging van beide
originele bestanden is. Hierbij wordt de kolommen Voornaam
en Familienaam
uit het
eerste bestand behouden. Ook de data uit het eerste bestand wordt overgenomen. De kolommen
worden aangevuld met de gegevens uit het tweede bestand. Er komen dus kolommen bij in de tabel,
en deze bevat de data uit het tweede CSV-bestand, die hoort bij de persoon. Indien een persoon uit het
eerste bestand niet voorkomt in het tweede bestand, dan worden deze gegevens door ?
ingevuld.
Schrijf een functie merge()
met als argumenten:
De bestanden die Dodona gebruikt in de testcases vind je in het gecomprimeerde bestand SamenvoegenVanTabellen.zip1.
merge('Gegevens_0_1.csv', 'Gegevens_0_2.csv', 'Gegevens_0_out.csv')Inhoud 'Gegevens_0_1.csv'
Voornaam;Familienaam;Scheikunde;Informatica Greet;Van de Putte;10,0;16,0 Jamie;De Jonge;19,0;19,0 Ode;Nachtegaele;5,0;20,0 Lotte;Verstraete;14,0;15,0 Nick;Paulussen;7,0;17,0 Xantippe;Jansens;16,0;9,0 Thomas;Bomans;12,0;3,0Inhoud 'Gegevens_0_2.csv'
Voornaam;Familienaam;Geschiedenis;Nederlands;Latijn;Frans;Maatschappelijke Vorming Nick;Paulussen;8,0;17,0;12,0;17,0;12,0 Femke;Geeraert;16,0;11,0;12,0;2,0;1,0 Lotte;Verstraete;6,0;7,0;6,0;19,0;1,0 Ulrike;Pieters;7,0;19,0;19,0;4,0;18,0 Jamie;De Jonge;0,0;15,0;15,0;12,0;5,0 Ode;Nachtegaele;16,0;2,0;12,0;14,0;20,0 Renee;Vrielinck;15,0;8,0;2,0;13,0;3,0 Thomas;Bomans;12,0;8,0;9,0;7,0;19,0Inhoud 'Gegevens_0_out.csv'
Voornaam;Familienaam;Scheikunde;Informatica;Geschiedenis;Nederlands;Latijn;Frans;Maatschappelijke Vorming Greet;Van de Putte;10,0;16,0;?;?;?;?;? Jamie;De Jonge;19,0;19,0;0,0;15,0;15,0;12,0;5,0 Ode;Nachtegaele;5,0;20,0;16,0;2,0;12,0;14,0;20,0 Lotte;Verstraete;14,0;15,0;6,0;7,0;6,0;19,0;1,0 Nick;Paulussen;7,0;17,0;8,0;17,0;12,0;17,0;12,0 Xantippe;Jansens;16,0;9,0;?;?;?;?;? Thomas;Bomans;12,0;3,0;12,0;8,0;9,0;7,0;19,0