将字典值写入csv python

时间:2018-01-08 07:35:18

标签: python csv dictionary

我有字典,

d = [{
       'id': 1
       'a' : [11,12],
       'b' : [25,17],
       'c' : [13,18] 
}]

这里我想写csv,列标题为键(id,a,b,c) 和值作为行。 这里我想写第一行有值(1,11,25,13)和键(id,a,b,c) 第二行将具有值(1,12,17,18),其中两个行的id相同。 这意味着如果我的值有两个以上的值,则需要在下一行的csv中写入相同的列标题和相同的id。

我正在尝试这样的事情

CSV ="\n".join([k+','+",".join(v) for k,v in dict_data[0].items()])
print CSV

但同样,这些专栏正在排成一列, csv文件 id,1,(没有值,我需要1这里)----这里的id不会出现 一,11,12 B,25,17 它们以行的形式出现,我想要id,a b作为列

3 个答案:

答案 0 :(得分:2)

我认为Pandas DataFrame是你最好的镜头。我稍微修改了你的数据,以便将id列作为列表 -

d = {
       'id': [1],
       'a' : [11,12,13],
       'b' : [25,17],
       'c' : [13,18] 
}

import pandas as pd
df = pd.DataFrame.from_dict(d,orient='index').transpose()
df = df.fillna(method='ffill')
print(df)

最后,将其输出到csv df.to_csv('output.csv', index=False)

输出 -

id     a     b     c
0  1.0  11.0  25.0  13.0
1  1.0  12.0  17.0  18.0
2  1.0  13.0  17.0  18.0

首先创建一个数据帧,其中包含缺失的NA值,然后将这些NA值替换为上一行中的值。

答案 1 :(得分:0)

from_dict转换为pandas后,尝试id创建list的数据框:

import pandas as pd
d = [{ 'id': 1,
       'a' : [11,12],
       'b' : [25,17],
       'c' : [13,18] }]

# d['id'] = [d['id']] * len(d['a'])  # no need for this line; kept only because it is discussed in comments
df = pd.DataFrame.from_dict(d[0])  # if dict is in a list, use d[0]
print(df)

输出:

    a   b   c  id
0  11  25  13   1
1  12  17  18   1

要写入csv文件:

df.to_csv("out.csv", index=False)

答案 2 :(得分:0)

您可以将DataFrame构造函数与DataFrame.to_csv

一起使用
import pandas as pd

df = pd.DataFrame(d[0], columns=['id','a','b','c'])
print (df)
   id   a   b   c
0   1  11  25  13
1   1  12  17  18

然后:

df.to_csv(file, index=False)

所有在一起:

pd.DataFrame(d[0], columns=['id','a','b','c']).to_csv(file, index_col=False)