0

I am new to python and I have got to a point where I have created multiple csv file from large text files. So my csv's look like below.

CSV1

ABC, 1

DEF, 2

GHI, 3

CSV2

ABC, 4

DEF, 5

GHI, 6

and so on for upto 15 csv files.

I would like to create a combined csv file which looks something like below.

ABC, 1, 4

DEF, 2, 5

GHI, 3, 6

Any pointers on how to do this is appreciated.

2
  • Have you tried anything so far? Or even researched? Commented Jul 25, 2013 at 5:07
  • Maybe try google.com with query like python csv? Commented Jul 25, 2013 at 5:10

2 Answers 2

0
import csv
from collections import defaultdict

csvs = ["data1.csv", "data2.csv"]
for file in csvs:
    for line in csv.reader(open(file)):
        d.setdefault(line[0], []).append(line[1]) 

with open("result.csv", "w") as f:
    wrt = csv.writer(f)
    wrt.writerows([[k] + v for k, v in d.items()])
Sign up to request clarification or add additional context in comments.

Comments

0

Assuming all the CSV files are of the same length and contain the same first column in the same order, something like this might work for you:

list_of_files = ['csv1.csv', 'csv2.csv', 'csv3.csv']

# Use the first file as a template
with open(list_of_files[0], 'r') as f:
    output_text = [line.strip() for line in f]

# Append the values to the end of the lines
for fn in list_of_files[1:]:
    with open(fn, 'r') as f:
        for i, line in enumerate(f):
            key, value = line.strip().split(",")
            output_text[i] += "," + value

# Dump result to new csv
with open("result.csv", 'w') as f:
    f.write("\n".join(output_text))

2 Comments

You do not need f.close() when using with. I also suggest looking into DictReader.
Thanks, it's a force of habit.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.