【问题标题】: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 是你所需要的

标签: python python-3.x pandas dataframe dictionary


【解决方案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]}
    

    【讨论】:

      猜你喜欢
      • 2022-07-05
      • 1970-01-01
      • 2021-06-19
      • 2019-07-18
      • 2019-02-22
      • 2018-11-07
      • 2017-07-16
      • 2020-12-22
      相关资源
      最近更新 更多