将多个列表写入 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的主要内容,如果未能解决你的问题,请参考以下文章