将字典值写入csv python
我有字典将字典值写入csv python,python,csv,dictionary,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相同。 这意味着,如果我的值有两个以上的值,则需要在下一行中使用相同的列标题和相同的id以csv格式写入 我
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相同。
这意味着,如果我的值有两个以上的值,则需要在下一行中使用相同的列标题和相同的id以csv格式写入
我在尝试这样的事情
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,a b作为列,我想熊猫数据框是你最好的选择。我稍微修改了您的数据,使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列也成为列表-
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
转换为列表后,尝试从
创建熊猫的数据帧:
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)
在将id
转换为列表后,尝试从_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
constructor用于:
然后:
df.to_csv(file, index=False)
总而言之:
pd.DataFrame(d[0], columns=['id','a','b','c']).to_csv(file, index_col=False)
您可以将DataFrame
constructor用于:
然后:
df.to_csv(file, index=False)
总而言之:
pd.DataFrame(d[0], columns=['id','a','b','c']).to_csv(file, index_col=False)
您的代码在哪里?您的id
键始终是int
,还是也可以是列表
对象?您的数据有多规律?您可以使用字符串操作编写.csv
,也可以使用库,例如pandas
,该库具有写入.csv
文件的方法,与您的数据相对应(您当然需要根据pandas
格式化数据)。您是否尝试“转置”输入数据并使用csv
库?您的代码在哪里?您的id
键始终是int
,还是也可以是列表
对象?您的数据有多规律?您可以使用字符串操作编写.csv
,也可以使用库,例如pandas
,该库具有写入.csv
文件的方法,与您的数据相对应(您当然需要根据pandas
格式化数据)。您是否尝试“转置”输入数据并使用csv
库?嘿,首先值可以是字符串。不,它仍然可以工作:[“5”]*5
生成[“5”、“5”、“5”]
。列表项是重复的,而不是算术乘法。实际上,不需要这个代码语句。即使省略此语句,输出仍保持不变。谢谢您的回复。是的,Dict是list,我使用了索引[0],但错误数组必须都是相同的长度。这对我来说没问题。“1”后面应该有一个逗号。嘿,首先值可以是字符串。不,它仍然有效:[“5”]*5
产生[“5”、“5”、“5”、“5”]
。列表项是重复的,而不是算术乘法。实际上,不需要这个代码语句。即使省略此语句,输出仍保持不变。谢谢您的回复。是的,Dict是list,我使用了索引[0],但错误数组必须都是相同的长度。这对我来说没问题。“1”后面应该有一个逗号。嘿,值也可以是字符串。使用代码时的错误是数组必须都是相同的长度。问题是样本数据或真实数据字典?嘿,值也可以是字符串。使用代码时出错我得到的是数组必须都是相同的长度示例数据或真实数据字典有问题吗?列表没有属性值这是我得到的列表没有属性值这是我得到的