How to transpose a dataset in a csv file?

后端 未结 7 1019
太阳男子
太阳男子 2020-11-30 01:32

For example, i would like to transform:

Name,Time,Score
Dan,68,20
Suse,42,40
Tracy,50,38

Into:

Name,Dan,Suse,Tracy
Time,68,         


        
7条回答
  •  抹茶落季
    2020-11-30 01:44

    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.

提交回复
热议问题