Создание фрейма данных pandas на основе доступа к определенным ключам вложенного словаря

#python #json #pandas #dataframe #dictionary

Вопрос:

Как нижеприведенный словарь может быть преобразован в ожидаемый фрейм данных, как показано ниже?

 {
    "getArticleAttributesResponse": {
        "attributes": [{
            "articleId": {
                "id": "2345",
                "locale": "en_US"
            },
            "keyValuePairs": [{
                "key": "tags",
                "value": "[{"displayName": "Nice", "englishName": "Pradeep", "refKey": "Key2"}, {"displayName": "Family Sharing", "englishName": "Sarvendra", "refKey": "Key1", "meta": {"customerDisplayable": [false]}}}]"
            }]
        }]
    }
}
 

Ожидаемый кадр данных:

     id           displayName              englistname          refKey
    2345            Nice                   Pradeep             Key2
    2345         Family Sharing            Sarvendra           Key1
 

Ответ №1:

 df1 = pd.DataFrame(d['getDDResponse']['attributes']).explode('keyValuePairs')
df2 = pd.concat([df1[col].apply(pd.Series) for col in df1],1).assign(value = lambda x :x.value.apply(eval)).explode('value')
df = pd.concat([df2[col].apply(pd.Series) for col in df2],1)
 

выход:

       0     0     display englishName reference   source
0  1234  tags  Unarchived  Unarchived    friend  monster
 

Комментарии:

1. Большое спасибо @Nk03 … Извините, что я не опубликовал полный входной словарь и ожидаемый выходной фрейм данных ранее. Теперь отредактировал и то, и другое. Пожалуйста, подскажите, как мы можем это сделать…Пожалуйста, пожалуйста, помогите, так как я заблокирован.

2. Я отредактировал свой оригинальный пост…словарь и ожидал, что daataframe