将数据框转换为字典
Posted
技术标签:
【中文标题】将数据框转换为字典【英文标题】:Convert dataframe into dictionary 【发布时间】:2019-08-02 13:19:59 【问题描述】:我有一个数据框,我希望它选择几列并以某种方式将其转换为字典
数据框:
这是我想要的输出
20: [4.6, 4.3, 4.3, 20],
21: [4.6, 4.3, 4.3, 21],
22: [6.0, 5.6, 9.0, 22],
23: [8.75, 5.6, 6.6, 23]
我试过了
items_dic = data[["Length","Width","Height","Pid" ]].set_index('Pid').T.to_dict('list')
items_dic = 20: [4.6, 4.3, 4.3],
21: [4.6, 4.3, 4.3],
22: [6.0, 5.6, 9.0],
23: [8.75, 5.6, 6.6]
但这不包括值列表中的 Pid 有人能解释一下为什么吗?
【问题讨论】:
请以正确的格式写入数据框,而不是图片。 很抱歉,我对 SO 还很陌生,我不知道该怎么做drop=False
in set_index
是你所需要的
【参考方案1】:
或者使用dict(zip(...))
:
>>> cols = ["Length","Width","Height","Pid"]
>>> items_dic = dict(zip(df['Pid'],df[cols].values.tolist()))
>>> items_dic
20: [4.8, 4.3, 4.3, 20.0], 21: [4.8, 4.3, 4.3, 21.0], 22: [6.0, 5.6, 9.0, 22.0], 23: [8.75, 5.6, 6.6, 23.0], 24: [6.0, 5.16, 6.6, 24.0]
>>>
【讨论】:
【参考方案2】:在DataFrame.set_index
中设置参数drop=False
,因为默认参数drop=False
将列移动到索引:
cols = ["Length","Width","Height","Pid"]
items_dic = data[cols].set_index('Pid', drop=False).T.to_dict('list')
print (items_dic)
20: [4.6, 4.3, 4.3, 20.0],
21: [4.6, 4.3, 4.3, 21.0],
22: [6.0, 5.6, 9.0, 22.0],
23: [8.75, 5.6, 6.6, 23.0]
【讨论】:
以上是关于将数据框转换为字典的主要内容,如果未能解决你的问题,请参考以下文章