将Python列表写入csv中的列

Ale*_*ley 33 python csv list

我有5个列表,长度相同,我想将它们写入CSV中的5列.到目前为止,我只能使用以下代码将一个写入一列:

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

如果我添加另一个for循环,它只是将该列表写入同一列.有人知道获得五个独立列的好方法吗?

Jor*_*ley 39

将它们更改为行

rows = zip(list1,list2,list3,list4,list5)
Run Code Online (Sandbox Code Playgroud)

然后就是

import csv

with open(newfilePath, "w") as f:
    writer = csv.writer(f)
    for row in rows:
        writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)


Ash*_*man 12

以下代码将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()
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样

在此输入图像描述


jh3*_*314 5

您可以使用izip组合您的列表,然后迭代它们

for val in itertools.izip(l1,l2,l3,l4,l5):
    writer.writerow(val)
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,Python 3.x 中不存在 `itertools.izip()`,并且内置的 `zip()` 提供了一个迭代器,因此它是一个替代品。另请注意,如果您有一个列表列表,则可以使用解包运算符 (`zip(*lists)`)。这比使用变量 `l1`、`l2` ​​等更好的设计...... (5认同)

jpp*_*jpp 5

如果您乐于使用 3rd 方库,您可以使用 Pandas 来实现。好处包括无缝访问专用方法和行/列标签:

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
Run Code Online (Sandbox Code Playgroud)