#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