python – How to transpose a dataset in a csv file?

python – How to transpose a dataset in a csv file?

If the whole file contents fits into memory, you can use

import csv
from itertools import izip
a = izip(*csv.reader(open(input.csv, rb)))
csv.writer(open(output.csv, wb)).writerows(a)

You can basically think of zip() and izip() as transpose operations:

a = [(1, 2, 3),
     (4, 5, 6),
     (7, 8, 9)]
zip(*a)
# [(1, 4, 7),
#  (2, 5, 8),
#  (3, 6, 9)]

izip() avoids the immediate copying of the data, but will basically do the same.

Transfer from input.csv to output.csv. Pandas can also help.

import pandas as pd
pd.read_csv(input.csv, header=None).T.to_csv(output.csv, header=False, index=False)

python – How to transpose a dataset in a csv file?

Same answer of nosklo (all credits to him), but for python3:

from csv import reader, writer 
with open(source.csv) as f, open(destination.csv, w) as fw: 
    writer(fw, delimiter=,).writerows(zip(*reader(f, delimiter=,)))

Leave a Reply

Your email address will not be published.