【问题标题】:What can be the best approach for the following transformation?以下转换的最佳方法是什么?
【发布时间】:2021-09-29 11:28:32
【问题描述】:

我有一个字典列表如下:

items = [
    {
        "identification":{
            "id":"ID1",
            "FCID":"FCID1"
        },
        "attributes":[
            {
                "key":"KEY1",
                "value":"VALUE11"
            },
            {
                "key":"KEY2",
                "value":"VALUE12"
            },
            {
                "key":"KEY3",
                "value":"VALUE13"
            }
        ]
    },
    {
        "identification":{
            "id":"ID2",
            "FCID":"FCID2"
        },
        "attributes":[
            {
                "key":"KEY1",
                "value":"VALUE21"
            },
            {
                "key":"KEY2",
                "value":"VALUE22"
            },
            {
                "key":"KEY3",
                "value":"VALUE23"
            },
            {
                "key":"KEY4",
                "value":"VALUE24"
            }
        ]
    }
]

现在我想要的输出是:(以 Python DataFrame 的形式)

ID FCID  KEY1     KEY2    KEY3   KEY4
1   F1  VALUE11 VALUE12 VALUE13  None
2   F2  VALUE21 VALUE22 VALUE23 VALUE24

而且我不能改变它的结构。这就是我从 API 接收的数据。 那么,我怎样才能做到这一点呢?任何想法

【问题讨论】:

    标签: python pandas list dataframe dictionary


    【解决方案1】:

    您可以尝试使用列表推导式,

    import pandas as pd
    
    flatten = (
        {**{v['key']: v['value'] for v in i['attributes']}, **i['identification']} 
        for i in items
    )
    
    pd.DataFrame(flatten)
    

    Out[*]: 
    
          KEY1     KEY2     KEY3   id   FCID     KEY4
    0  VALUE11  VALUE12  VALUE13  ID1  FCID1      NaN
    1  VALUE21  VALUE22  VALUE23  ID2  FCID2  VALUE24
    

    【讨论】:

      猜你喜欢
      • 2016-05-29
      • 2015-01-09
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多