[英]Write dictionary values to csv python
我有字典,
d = [{
'id': 1
'a' : [11,12],
'b' : [25,17],
'c' : [13,18]
}]
在这里,我想用列标题作为键(id,a,b,c)和值作为行的csv语言编写。 在这里我想写第一行的键值为(id,a,b,c)的值为(1,11,25,13),第二行的键值为id为相同的键的值为(1,12,17,18)两行相同。 这意味着如果我的值有两个以上的值,则需要在下一行的csv中用相同的列标题和相同的id编写它。
我正在尝试这样的事情
CSV ="\n".join([k+','+",".join(v) for k,v in dict_data[0].items()])
print CSV
但是再次,列作为行来,csv文件id,1,(无值,我这里需要1)----这里id不会出现a,11,12 b,25,17并且它们作为行来,我想要id,ab作为列
我认为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值替换为上一行中的值。
将id
转换为list
后,尝试from_dict
创建pandas
数据from_dict
:
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)
您可以将DataFrame
构造DataFrame.to_csv
与DataFrame.to_csv
一起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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.