无法从数据框创建简单的字典

时间:2019-05-13 06:37:56

标签: python pandas dictionary

我有一张桌子看起来是

          0                   1
0   2760023     XXXXXXXXYYYY111
1   2760024     XXXXXXXXYYYY112
2   2760042     XXXXXXXXYYYY113
3   2760011     XXXXXXXXYYYY114
4   2760041     XXXXXXXXYYYY115
5   2760012     XXXXXXXXYYYY116
6   2760033     XXXXXXXXYYYY117

没有标题。我需要创建一个简单的字典:

dict = {2760023:XXXXXXXXYYYY111, 
        2760024:XXXXXXXXYYYY112... etc.}

我阅读了很多关于SO和文档的文章,但是对我来说结果是错误的... 因为我使用to_dict()(无论使用什么参数),就像有人在这里描述的那样:

  

26716616 /将熊猫数据框转换为词典

我得到了一个不简单的字典,但是:

    {0: {0: 2760023,
  1: 2760024,
  2: 2760042,
  3: 2760011,
  4: 2760041,
  5: 2760012,
  6: 2760033},
 1: {0: 'XXXXXXXXYYYY111',
  1: 'XXXXXXXXYYYY112',
  2: 'XXXXXXXXYYYY113',
  3: 'XXXXXXXXYYYY114',
  4: 'XXXXXXXXYYYY115',
  5: 'XXXXXXXXYYYY116',
  6: 'XXXXXXXXYYYY117'}}

所以它有点在列表中? 有人可以告诉我我做错了什么吗?

P.S。表具有data.frame类型

3 个答案:

答案 0 :(得分:1)

对于to_dict请勿使用任何参数:

>>> df.set_index('0').to_dict()['1']
{2760023: 'XXXXXXXXYYYY111', 2760024: 'XXXXXXXXYYYY112', 2760042: 'XXXXXXXXYYYY113', 2760011: 'XXXXXXXXYYYY114', 2760041: 'XXXXXXXXYYYY115', 2760012: 'XXXXXXXXYYYY116', 2760033: 'XXXXXXXXYYYY117'}
>>> 

答案 1 :(得分:1)

如果只有2列,您也可以这样做:

removeImage (imageKey, streamId) {
   console.log(streamId);
   streamIds.push(streamId); // insert the item to array
}

dict(df.values)

答案 2 :(得分:1)

还有其他方法:

{row[0]:row[1] for idx, row in df.iterrows()}

随着时间的推移,我们提供以下所有解决方案:

In [6]: %timeit {row[0]:row[1] for idx, row in df.iterrows()}                   
629 µs ± 56.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [7]: %timeit dict(df.values)                                                                                                                                                                      
44.1 µs ± 2.78 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [8]: %timeit df.set_index('0').to_dict()['1']                                                                                                                                                     
347 µs ± 18.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)