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

How to transpose a dataset in a csv file?


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

import csvfrom itertools import izipa = 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 pdpd.read_csv('input.csv', header=None).T.to_csv('output.csv', header=False, index=False)


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=',')))