将多个列表写入 csv Python

Posted

技术标签:

【中文标题】将多个列表写入 csv Python【英文标题】:Writing multiple lists to csv Python 【发布时间】:2018-04-02 19:35:10 【问题描述】:

我正在尝试编写一个将多个列表写入单个 csv 文件的函数,并且我能够获取要写入的列标题,但不能获取任何数据。我的数据在类似于 [92,3801,2,22,4] 的列表中,第二个是 [3.0,2,23,5],我正在寻找这方面的指导。谢谢!

import csv
def export_results(number_of_words_sentence,mean_word_per_sentence):
    with open("assignment_7_results.csv", "w", newline="") as Assignment_7_results:
        writer = csv.writer(Assignment_7_results)
        writer.writerow(["Number of Words", "Words/Sentence"])
    # Our .csv file will have two columns, one for the dict keys and one for the dict values
        writer.writerows(number_of_words_sentence)
        writer.writerows(mean_words_per_sentence)

【问题讨论】:

顾名思义,writerows 写入,而不是列。您必须依次压缩和迭代每对元素,然后调用 writerow 【参考方案1】:

顾名思义,writerows 写入行,而不是列。此外,您的列表大小不等,因此您需要做一些事情来解决这个问题。处理这种事情的标准方法是使用itertools.zip_longest

from itertools import zip_longest # izip_longest in python2.x

with open("assignment_7_results.csv", "w") as f:
    w = csv.writer(f)
    w.writerow(["Number of Words", "Words/Sentence"])
    for x, y in zip_longest(number_of_words_sentence, mean_word_per_sentence):
        w.writerow([x, y])

【讨论】:

我尝试将其添加到我的代码中,但没有产生输出 @J.McCraiton 好的。和?你认为那条信息可以帮助我理解问题所在吗? 目前它会生成标题,下面没有列。抱歉,应该更详细一点。我的坏人。 @J.McCraiton 我明白了。这有点奇怪。您确定您的列表正在与数据一起传递吗? 我 95% 确定。我正在使用从以前的函数生成的列表,我可以打印出来查看结果并将这些列表作为参数输入【参考方案2】:

尝试将数据存储在具有多个不同长度列表的 csv 文件中。在这里,我尝试将与 A 和 B 相同的标题作为列表名称。

import pandas as pd

A = ['Apple', 'Dog']

B = ['Cat', 'OWL', 'PEACOCK']

dict_1 = 'A': A, 'B': B

df = pd.DataFrame.from_dict(dict_1, orient='index')

dt = df.transpose()

dt.to_csv('myfile.csv', index=False, header=True,  encoding='utf-8')

【讨论】:

以上是关于将多个列表写入 csv Python的主要内容,如果未能解决你的问题,请参考以下文章

使用 R 将多个数据帧写入 .csv 文件

python中CSV写入字符串列表,单行变多个单字符的问题?

使用循环进行 Web 抓取并写入 csv

如何将多个csv按行合并?(不是首尾相接的按列合并)

如何将列表列表写入 CSV 文件 Python?

将列表字典写入 CSV 文件