Python 使用dict键作为列名写入CSV文件
我有以下dicts格式的数据:Python 使用dict键作为列名写入CSV文件,python,file,csv,Python,File,Csv,我有以下dicts格式的数据: {Color: Red, Age: 29, Date: October 2nd, Time: 4pm} 我想将这些dict写入csv,这样“颜色、年龄、日期、时间”就是列标题,字段作为行归档。这样,当我再次读取csv文件时,我将以上述相同的方式格式化数据 正确的方法是什么?熊猫很容易做到这一点: import pandas as pd data = [ {"A":1.0, "B":2.0, "C":"foo"}, {"A":100, "B":2
{Color: Red, Age: 29, Date: October 2nd, Time: 4pm}
我想将这些dict写入csv,这样“颜色、年龄、日期、时间”就是列标题,字段作为行归档。这样,当我再次读取csv文件时,我将以上述相同的方式格式化数据
正确的方法是什么?熊猫很容易做到这一点:
import pandas as pd
data = [
{"A":1.0, "B":2.0, "C":"foo"},
{"A":100, "B":20, "C":"bar"},
{"A":0.1, "B":0.2, "C":"xyz"},
]
df = pd.DataFrame(data)
from StringIO import StringIO
buf = StringIO()
df.to_csv(buf, index=False) # convert DataFrame to csv
print buf.getvalue()
输出为:
A,B,C
1.0,2.0,foo
100.0,20.0,bar
0.1,0.2,xyz
A B C
0 1.0 2.0 foo
1 100.0 20.0 bar
2 0.1 0.2 xyz
要加载csv,请执行以下操作:
buf.pos = 0
print pd.read_csv(buf)
输出为:
A,B,C
1.0,2.0,foo
100.0,20.0,bar
0.1,0.2,xyz
A B C
0 1.0 2.0 foo
1 100.0 20.0 bar
2 0.1 0.2 xyz
如果要使用标准库,可以执行以下操作:
>>> import csv
>>> dicts = [{'Color': 'Red', 'Age': '29', 'Date': 'October 2nd', 'Time': '4pm'}, {'Color': 'Yellow', 'Age': '30', 'Date': 'September 3rd', 'Time': '5pm'}]
>>> with open('test.csv', 'wb') as csvfile:
writer = csv.writer(csvfile, delimiter=',',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
for d in dicts:
writer.writerow([d['Color'], d['Age'], d['Date'], d['Time']])
您将在csv文件中的两行中获得以下输出:
Red,29,October 2nd,4pm
Yellow,30,September 3rd,5pm
您可以使用该库并从任意数据行提取密钥名称
import csv
file = open('filename', 'w')
writer = csv.writer(file)
writer.write(rows[0].keys())
for row in rows:
writer.write(row)
使用您可以使用的标准和类来实现您想要的
写作:
import csv
dics = [{'Color':'Red', 'Age':29, 'Date':'October 2nd', 'Time':'4pm'},
{'Color':'Blue', 'Age':32, 'Date':'December 5th', 'Time':'6pm'},
{'Color':'Green', 'Age':12, 'Date':'January 10th', 'Time':'2pm'}]
with open("file.csv",'wb') as f:
# Using dictionary keys as fieldnames for the CSV file header
writer = csv.DictWriter(f, dics[0].keys())
writer.writeheader()
for d in dics:
writer.writerow(d)
阅读:
import csv
with open("file.csv", 'rb') as f:
reader = csv.DictReader(f)
dics = [ d for d in reader ]
>>> dics
[{'Color': 'Red', 'Date': 'October 2nd', 'Age': '29', 'Time': '4pm'},
{'Color': 'Blue', 'Date': 'December 5th', 'Age': '32', 'Time': '6pm'},
{'Color': 'Green', 'Date': 'January 10th', 'Age': '12', 'Time': '2pm'}]