简体   繁体   English

将 Python 列表写入 csv 中的列

[英]Writing Python lists to columns in csv

I have 5 lists, all of the same length, and I'd like to write them to 5 columns in a CSV.我有 5 个列表,长度都相同,我想将它们写入 CSV 中的 5 列。 So far, I can only write one to a column with this code:到目前为止,我只能使用以下代码向一列写入一个:

with open('test.csv', 'wb') as f:
    writer = csv.writer(f)
    for val in test_list:
        writer.writerow([val])

If I add another for loop, it just writes that list to the same column.如果我添加另一个for循环,它只会将该列表写入同一列。 Anyone know a good way to get five separate columns?有人知道获得五个单独列的好方法吗?

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)

The following code writes python lists into columns in csv以下代码将python列表写入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输出看起来像这样

在此处输入图片说明

You can use izip to combine your lists, and then iterate them您可以使用izip组合您的列表,然后迭代它们

for val in itertools.izip(l1,l2,l3,l4,l5):
    writer.writerow(val)

If you are happy to use a 3rd party library, you can do this with Pandas.如果您乐于使用 3rd 方库,您可以使用 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

I didn't want to import anything other than csv, and all my lists have the same number of items.我不想导入 csv 以外的任何东西,而且我所有的列表都有相同数量的项目。 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()

I just wanted to add to this one- because quite frankly, I banged my head against it for a while - and while very new to python - perhaps it will help someone else out.我只是想添加到这个 - 因为坦率地说,我用头撞了一段时间 - 虽然对 python 非常陌生 - 也许它会帮助其他人。

 writer.writerow(("ColName1", "ColName2", "ColName"))
                 for i in range(len(first_col_list)):
                     writer.writerow((first_col_list[i], second_col_list[i], third_col_list[i]))
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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM