我有一个python字典,如下所示:
{
key1: [value1, value2, value3, n],
key2: [value1, value2, value3, n],
key3: [value1, value2, value3, n],
key4: [value1, value2, value3, n]
}
我想将这些值写入csv文件,格式为每行包含Keys作为标题,并在该键下包含相关值(逐行)。
答案 0 :(得分:2)
pandas
提供了一个非常直接的解决方案 -
import pandas as pd
df = pd.DataFrame({
'key1': ['value1', 'value2', 'value3', 'n'],
'key2': ['value1', 'value2', 'value3', 'n'],
'key3': ['value1', 'value2', 'value3', 'n'],
'key4': ['value1', 'value2', 'value3', 'n']
})
df.to_csv('/path/to/file')
答案 1 :(得分:1)
或许pandas
可以为您提供更直接的方法来实现这一目标,但如果您只是想依赖标准库中的csv
包,则应采用以下天真方法:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
data = {
'key1': ['value1', 'value2', 'value3', 'n'],
'key2': ['value1', 'value2', 'value3', 'n'],
'key3': ['value1', 'value2', 'value3', 'n'],
'key4': ['value1', 'value2', 'value3', 'n']
}
header = data.keys()
no_rows = len(data[list(header)[0]])
with open('out.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=',')
csvwriter.writerow(header)
for row in range(no_rows):
csvwriter.writerow([data[key][row] for key in header])
这导致
key1,key2,key3,key4
value1,value1,value1,value1
value2,value2,value2,value2
value3,value3,value3,value3
n,n,n,n
希望这有帮助!
修改强>
由于这是现在接受的答案,我觉得我应该补充说pandas.DataFrame.to_csv
确实提供了更直接的方法来实现这一目标,如其他答案所述:
import pandas as pd
pd.DataFrame(data).to_csv('out.csv', index=False)
产生与上面相同的输出(可能具有不同的行终止符,具体取决于您的系统)。