Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字典值写入csv python_Python_Csv_Dictionary - Fatal编程技术网

将字典值写入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”后面应该有一个逗号。嘿,值也可以是字符串。使用代码时的错误是数组必须都是相同的长度。问题是样本数据或真实数据字典?嘿,值也可以是字符串。使用代码时出错我得到的是数组必须都是相同的长度示例数据或真实数据字典有问题吗?列表没有属性值这是我得到的列表没有属性值这是我得到的