[英]Python write dictionary to csv with header
我想用 header 写一个特定的 python 字典到 csv。 我查看了其他问题,但没有一个与我的字典结构相似:
myDic = { "a" : 1, "b" : 2, "c" : 15}
header = ["word", "count"]
with open('myFile.csv', 'w', encoding='utf-8-sig') as f:
w = csv.DictWriter(f, header)
w.writeheader()
w.writerow(myDic)
我得到的只是一个word,count
。 我正在使用 python 3。
您不能以这种方式使用DictWriter
,它是为key=column_header
和value=[row_values]
设计的。
您可以改为迭代您的字典并使用csv.writerow
import csv
myDic = { "a" : 1, "b" : 2, "c" : 15}
header = ["word", "count"]
with open('myFile.csv', 'w', encoding='utf-8-sig') as f:
w.writerow(header)
for k, v in myDic.items():
w.writerow([k, v])
或者正如 juanpa.arrivillaga 指出的那样,您可以直接在writerows
.items()
上写入。
with open('myFile.csv', 'w', encoding='utf-8-sig') as f:
w.writerow(header)
w.writerows(myDic.items())
但是,以这种方式将 csv 的信息存储在字典中是非常有限的,因为它只能是两列,因此在继续沿此路径之前确保这是一个可接受的选择。
您正在尝试将整个字典写成一行。 相反,分别编写每一行。
请在此处查看更多详细信息:
https://docs.python.org/3/library/csv.html#csv.DictWriter
作为示例,请参阅以下用法:
import csv
myDic = { "a" : 1, "b" : 2, "c" : 15}
with open('myFile.csv', 'w', newline='') as csvfile:
fieldnames = ['word', 'count']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for key in myDic:
writer.writerow({'word': key, 'count': myDic[key]})
让我知道这是否有帮助。 我没有测试代码......但我可能会在你看到答案之前。
编辑是的,经过测试,似乎工作正常。 祝你好运!
这应该工作
import csv
myDic = { "a" : 1, "b" : 2, "c" : 15}
header = ["word", "count"]
with open('myFile.csv', 'w', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(header) # write the header
for k,v in myDic.items():
writer.writerow([k,v])
我是 Pandas 人,所以我将给出使用 Pandas 的方法
import pandas as pd
myDic = { "a" : 1, "b" : 2, "c" : 15}
header = ["word", "count"]
df = pd.DataFrame.from_dict(myDic, orient='index').reset_index()
df.columns = header
df.to_csv('word_count.csv', index=False)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.