将数据帧转换为字典

我有一个四列的数据框。我想将此数据帧转换为python字典。我希望第一列的元素是,同一行中其他列的元素是

数据帧:

ID A B C
0 p 13 2
1问题4 3 2
2R409

输出应如下所示:

字典:

{'p':[1,3,2],'q':[4,3,2],'r':[4,0,9]}

to_dict()方法将列名设置为字典键,因此您需要稍微改变数据帧的形状。将“ID”列设置为索引,然后转置数据帧是实现这一点的一种方法

to_dict()还接受一个“orient”参数,您需要该参数才能为每列输出一个值列表。否则,将为每列返回一个形式为{index:value}的字典

可以使用以下行完成这些步骤:

&gt&燃气轮机&燃气轮机;df.set_index('ID').T.to_dict('list'))
{'p':[1,3,2],'q':[4,3,2],'r':[4,0,9]}

如果需要不同的字典格式,下面是可能的orient参数的示例。考虑下面的简单数据框:

&gt&燃气轮机&燃气轮机;df=pd.DataFrame({'a':['red','yellow','blue'],'b':[0.5,0.25,0.125]})
&燃气轮机&燃气轮机&燃气轮机;df
a b
0红色0.500
1黄色0.250
2蓝色0.125

然后,选项如下所示

dict-默认设置:列名是键,值是索引:数据对的字典

&gt&燃气轮机&燃气轮机;df.to_dict(“dict”)
{'a':{0:'红色',1:'黄色',2:'蓝色'},
'b':{0:0.5,1:0.25,2:0.125}

列表-键是列名,值是列数据列表

&gt&燃气轮机&燃气轮机;df.to_dict(‘列表’)
{'a':['red'、'yellow'、'blue'],
‘b’:[0.5,0.25,0.125]}

系列类似于“列表”,但值是系列

&gt&燃气轮机&燃气轮机;df.to_dict(‘系列’)
{'a':0红色
1黄色
2蓝色
名称:a,数据类型:对象,
“b”:0.500
1    0.250
2    0.125
名称:b,数据类型:float64}

拆分-将列/数据/索引拆分为键,值分别为列名、行和索引标签的数据值

&gt&燃气轮机&燃气轮机;df.to_dict(“拆分”)
{'columns':['a','b'],
‘数据’:[‘红色’,0.5],‘黄色’,0.25],‘蓝色’,0.125],
“索引”:[0,1,2]}

记录-每行成为一个字典,其中键是列名,值是单元格中的数据

&gt&燃气轮机&燃气轮机;df.to_dict(“记录”)
[{'a':'red','b':0.5},
{'a':'yellow','b':0.25},
{'a':'blue','b':0.125}]

索引与“记录”类似,但它是一个字典字典,以键作为索引标签(而不是列表)

&gt&燃气轮机&燃气轮机;df.to_dict(‘索引’)
{0:{'a':'red','b':0.5},
1:{'a':'yellow','b':0.25},
2:{'a':'blue','b':0.125}

发表评论