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.