Вложенный JSON в фрейм данных Python (Instagram JSON) - PullRequest
0 голосов
/ 12 сентября 2018

Итак, я загрузил свой JSON для обмена сообщениями из IG и попытался превратить его в DataFrame.Все, что меня интересует, это содержание сообщения одного отправителя ('sabinabacevich') другому ('panbacevich').Вот как выглядит json:

 [{'participants': ['panbacevich', 'sabinabacevich'], 
   'conversation':
                  [{'sender': 'panbacevich', 'created_at': '2018-09- 
                  11T07:43:00.344130+00:00', 'media_owner': 'tyrone', 
                  'media_share_caption': 'Fr lol', 'media_share_url': 
                  'https://scontent-lax3- 1.cdninstagram.com/vp/
                  18f52cd945b10a7c6612ccb1644ee0a3/5C320320/t51.2885- 
                  15/e35/40456720_1886441298071798_219870885965499684_n.jpg? 
                  ig_cache_key=MTg2NTYxNjkxOTEyNzQ2NzY5Mg%3D%3D.2'}, 
                  {'sender':

Я просмотрел большинство вложенных примеров, которые я нашел в Интернете, но не могу туда добраться.Просьба отправить помощь

1 Ответ

0 голосов
/ 26 сентября 2018

Прежде всего, json, который вы разместили выше, не является действительным json, я проверил его через онлайн-валидатор (этот: https://jsonlint.com/) и немного его почистил, чтобы он выглядел так:

[{"participants": ["panbacevich", "sabinabacevich"],
     "conversation": [{"sender": "panbacevich",
                       "created_at": "2018-09-11T07:43:00.344130+00:00",
                       "media_owner": "tyrone",
                       "media_share_caption": "Fr lol",
                       "media_share_url": "https://scontent-lax3-1.cdninstagram.com/vp/%2018f52cd945b10a7c6612ccb1644ee0a3/5C320320/t51.2885-%2015/e35/40456720_1886441298071798_219870885965499684_n.jpg?%20ig_cache_key=MTg2NTYxNjkxOTEyNzQ2NzY5Mg%3D%3D.2"
                       }]
     }]

Обратите внимание, что я удалил поле 'отправитель'.

Оттуда относительно просто загрузить его в кадр данных с помощью пакета json:

import json

import pandas as pd

file = [{"participants": ["panbacevich", "sabinabacevich"],
     "conversation": [{"sender": "panbacevich",
                       "created_at": "2018-09-11T07:43:00.344130+00:00",
                       "media_owner": "tyrone",
                       "media_share_caption": "Fr lol",
                       "media_share_url": "https://scontent-lax3-1.cdninstagram.com/vp/%2018f52cd945b10a7c6612ccb1644ee0a3/5C320320/t51.2885-%2015/e35/40456720_1886441298071798_219870885965499684_n.jpg?%20ig_cache_key=MTg2NTYxNjkxOTEyNzQ2NzY5Mg%3D%3D.2"
                       }]
     }]

data = json.dumps(file)

df = pd.read_json(data)

ОттудаСтолбец «Разговор» может быть доступен с помощью df.conversation.values, и тогда нужный вам дикт находится внутри списка внутри списка. Он может быть разбит по:

dict_you_want = df.conversation.values[0][0]

Оттуда вы можете получить доступ ко всему, что вам нужно.как из обычного словаря:

print(dict_you_want['media_share_caption'])
"Fr lol"

Обратите внимание, что если бы Датафрейм был длиннее 1 строки, вам также пришлось бы выбрать, к какой строке вы хотите получить доступ.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...