【问题标题】:Convert dictionary of dictionary into pandas dataframe将字典字典转换为熊猫数据框
【发布时间】:2019-07-18 00:10:44
【问题描述】:

我有这种字典

{100: {11: 0.01,
 13: 0.21,
 15: 0.5,
 17: 0.54,
 19: 0.6},

110:{11:0.5,
13:0.6,
15:0.8,
17:0.5
}
}

我想做这样的转换

MainId,Id,Value
100,11,0.01
100,13,0.21
100,15,0.5
100,17,0.54
100,19,0.6
110,11,0.5
110,13,0.6
110,15,0.8
110,17,0.5

它是怎么做到的?任何建议

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用DataFrame 构造函数对元组使用列表推导:

    d = {100: {11: 0.01,
     13: 0.21,
     15: 0.5,
     17: 0.54,
     19: 0.6},
    
    110:{11:0.5,
    13:0.6,
    15:0.8,
    17:0.5
    }
    }
    
    df = pd.DataFrame([(k, k1, v1) for k, v in d.items() for k1, v1 in v.items()],
                       columns=['MainId','Id','Values'])
    print (df)
       MainId  Id  Values
    0     100  11    0.01
    1     100  13    0.21
    2     100  15    0.50
    3     100  17    0.54
    4     100  19    0.60
    5     110  11    0.50
    6     110  13    0.60
    7     110  15    0.80
    8     110  17    0.50
    

    【讨论】:

    • 谢谢你成功了。当我执行 df.groupby['mainId']['Values'].max() 时,我会获得最大值,但我如何获得该最大值的 ID?
    • @TranquilOshan - 使用df.loc[df.groupby('mainId')['Values'].idxmax()]
    • @jezrael 请在您的空闲时间查看下面的问题,类似于上面的问题stackoverflow.com/questions/63364702/…
    猜你喜欢
    • 2018-07-14
    • 2019-05-07
    • 2020-12-01
    • 2017-12-12
    • 2018-11-25
    • 1970-01-01
    • 2022-12-05
    • 2016-09-06
    相关资源
    最近更新 更多