如何将数据框转换为嵌套字典?

我有一个看起来像这样的数据框:


    ORG                 SURVEY_DATE     NOS

Asset Management    2018-04-23          1.0

Asset Management    2018-05-08          1.0

Asset Management    2018-10-29          1.0

CIO                 2018-11-08          1.0

CIO                 2018-11-13          2.0

我想把它转换成一个像这样的字典。


{

  "Asset Management": {

    "2019-03-30": 50,

    "2019-03-31": 40,

    "2019-04-01": 20,

    "2019-04-02": 30

  },

  "CIO": {

    "2019-03-30": 10,

    "2019-03-31": 20,

  }

}


炎炎设计
浏览 176回答 2
2回答

慕娘9325324

好的,我更新了我的答案。哇!现在它起作用了。In [9]: dfOut[9]:                ORG SURVEY_DATE  NOS0  Asset Management  2018-04-23  1.01  Asset Management  2018-05-08  1.02  Asset Management  2018-10-29  1.03               CIO  2018-11-08  1.04               CIO  2018-11-13  2.0In [10]: df.groupby('ORG').apply(lambda x: dict(zip(x['SURVEY_DATE'],x['NOS']))).to_dict()Out[10]:{'Asset Management': {'2018-04-23': '1.0',  '2018-05-08': '1.0',  '2018-10-29': '1.0'}, 'CIO': {'2018-11-08': '1.0', '2018-11-13': '2.0'}}说明:如果您有 2 个或更多迭代,则可以使用zip以下方法同时循环它们:x = [1,2,3]y = [4,5,6]for i,j in zip(x, y):    print(i, j) # (1,4), (2,5), (3,6)我正在从 tuple 创建字典。也lambda只是任何一个线性函数定义的简写:foo = lambda x: x+1# equivalentdef foo(x):  return x+1

料青山看我应如是

假设您的数据框位于一个名为的变量中df:>>> df.groupby('ORG').apply(lambda f: {key: value for key, value in zip(f.SURVEY_DATE, f.NOS)} ).to_dict(){'Asset Management': {'2018-04-23': 1.0, '2018-05-08': 1.0, '2018-10-29': 1.0}, 'CIO': {'2018-11-08': 1.0, '2018-11-13': 2.0}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python