Метод позволяющий выбрать значения словаря внутри словаря
Как можно получить данные из словаря в словаре?
Например, запарсив данные из ВК по получению фото, видим что выдается следующее:
{
"response": {
"count": 230,
"items": [{
"album_id": -7,
"date": 1525187973,
"id": 456316241,
"owner_id": 1,
"has_tags": false,
"sizes": [{
....
}],
"text": "",
"likes": {
"user_likes": 0,
"count": 110405
},
"reposts": {
"count": 124
},
"comments": {
"count": 11666
}
Хочу получить "голые" данные:
import pandas as pd
df = pd.DataFrame(profile_photos, columns=['owner_id','likes','comments'])
и ожидаю:
owner_id likes comments
0 1 110405 11666
, а получаю, естественно:
owner_id likes comments
0 1 {'user_likes': 0, 'count': 110405} {'count': 11666}
То есть, возможно ли каким-то образом извлечь значение из словаря DataFrame, не прибегая к дополнительным изощрениям, типа цикла? Чтобы в дальнейшем осуществлять сортировку по полученным данным.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Можно воспользоваться json_normalize(...).
Пример:
In [14]: data = {'response': {'count': 230,
...: 'items': [{'album_id': -7,
...: 'date': 1525187973,
...: 'id': 456316241,
...: 'owner_id': 1,
...: 'has_tags': False,
...: 'sizes': [{}],
...: 'text': '',
...: 'likes': {'user_likes': 0, 'count': 110405},
...: 'reposts': {'count': 124},
...: 'comments': {'count': 11666}}]}}
In [15]: res = pd.json_normalize(data["response"]["items"])
In [16]: res
Out[16]:
album_id date id owner_id has_tags sizes text likes.user_likes likes.count reposts.count \
0 -7 1525187973 456316241 1 False [{}] 0 110405 124
comments.count
0 11666