Python字典以所需格式CSV

时间:2017-10-17 10:18:38

标签: python pandas csv

我有一个python字典,如下所示:

{
  key1: [value1, value2, value3, n],
  key2: [value1, value2, value3, n],
  key3: [value1, value2, value3, n],
  key4: [value1, value2, value3, n]
}

我想将这些值写入csv文件,格式为每行包含Keys作为标题,并在该键下包含相关值(逐行)。

2 个答案:

答案 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)

产生与上面相同的输出(可能具有不同的行终止符,具体取决于您的系统)。