Writing Python lists to columns in csv

后端 未结 7 710

I have 5 lists, all of the same length, and I\'d like to write them to 5 columns in a CSV. So far, I can only write one to a column with this code:

with open         


        
相关标签:
7条回答
  • 2020-11-29 19:30

    change them to rows

    rows = zip(list1,list2,list3,list4,list5)
    

    then just

    import csv
    
    with open(newfilePath, "w") as f:
        writer = csv.writer(f)
        for row in rows:
            writer.writerow(row)
    
    0 讨论(0)
  • 2020-11-29 19:31
    import csv
    dic = {firstcol,secondcol} #dictionary
    csv = open('result.csv', "w") 
    for key in dic.keys():
        row ="\n"+ str(key) + "," + str(dic[key]) 
        csv.write(row)
    
    0 讨论(0)
  • 2020-11-29 19:39

    The following code writes python lists into columns in csv

    import csv
    from itertools import zip_longest
    list1 = ['a', 'b', 'c', 'd', 'e']
    list2 = ['f', 'g', 'i', 'j']
    d = [list1, list2]
    export_data = zip_longest(*d, fillvalue = '')
    with open('numbers.csv', 'w', encoding="ISO-8859-1", newline='') as myfile:
          wr = csv.writer(myfile)
          wr.writerow(("List1", "List2"))
          wr.writerows(export_data)
    myfile.close()
    

    The output looks like this

    0 讨论(0)
  • 2020-11-29 19:39

    If you are happy to use a 3rd party library, you can do this with Pandas. The benefits include seamless access to specialized methods and row / column labeling:

    import pandas as pd
    
    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    list3 = [7, 8, 9]
    
    df = pd.DataFrame(list(zip(*[list1, list2, list3]))).add_prefix('Col')
    
    df.to_csv('file.csv', index=False)
    
    print(df)
    
       Col0  Col1  Col2
    0     1     4     7
    1     2     5     8
    2     3     6     9
    
    0 讨论(0)
  • 2020-11-29 19:43

    You can use izip to combine your lists, and then iterate them

    for val in itertools.izip(l1,l2,l3,l4,l5):
        writer.writerow(val)
    
    0 讨论(0)
  • 2020-11-29 19:48

    I didn't want to import anything other than csv, and all my lists have the same number of items. The top answer here seems to make the lists into one row each, instead of one column each. Thus I took the answers here and came up with this:

    import csv
    list1 = ['a', 'b', 'c', 'd', 'e']
    list2 = ['f', 'g', 'i', 'j','k']
    with open('C:/test/numbers.csv', 'wb+') as myfile:
        wr = csv.writer(myfile)
        wr.writerow(("list1", "list2"))
        rcount = 0
        for row in list1:
            wr.writerow((list1[rcount], list2[rcount]))
            rcount = rcount + 1
        myfile.close()
    
    0 讨论(0)
提交回复
热议问题