将数据框转换为字典

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]

【讨论】:

以上是关于将数据框转换为字典的主要内容,如果未能解决你的问题,请参考以下文章

将数据框转换为字典 [重复]

将 Python 字典转换为 Pandas 数据框

将数据框转换为字典 [重复]

将字典转换为数据框,键作为列名,键值作为数据框的列值

pandas:如何将字典转换为转置数据框? [复制]

将字典转换为 pandas 数据框