Не добавляет значение параметра meta json_normalize()
У меня есть JSON-файл с переписками из Telegram. Я пытаюсь сделать из него датафрейм с сообщениями и именами тех, с кем ведется приватный чат.
Начало данных выглядит так:
{
"about": "Здесь те данные, которые Вы запрашивали. Напоминаем, что мы не используем информацию о Вас для рекламы и не продаём её другим. На серверах хранится только та информация, которая позволяет Вам полноценно пользоваться Telegram.\n\nУправлять доступом можно в настройках приложения > Конфиденциальность и безопасность.",
"chats": {
"about": "Здесь перечислены чаты, которые Вы экспортировали.",
"list": [
{
"name": "Человек",
"type": "personal_chat",
"id": ---------,
"messages": [
{
"id": 1,
"type": "message",
"date": "2017-10-29T14:49:18",
"date_unixtime": "1509277758",
"from": "---------------------",
"from_id": "---------",
"file": "(File not included. Change data exporting settings to download.)",
"thumbnail": "(File not included. Change data exporting settings to download.)",
"media_type": "sticker",
"sticker_emoji": "☺️",
"width": 310,
"height": 512,
"text": ""
},
{
"id": 2,
"type": "message",
"date": "2017-10-29T15:04:33",
"date_unixtime": "1509278673",
"from": "----------------",
"from_id": "---------",
"file": "(File not included. Change data exporting settings to download.)",
"thumbnail": "(File not included. Change data exporting settings to download.)",
"media_type": "sticker",
"sticker_emoji": "?",
"width": 510,
"height": 512,
"text": ""
},
{
"id": 3,
"type": "message",
"date": "2017-10-29T15:04:42",
"date_unixtime": "1509278682",
"from": "---------",
"from_id": "---------",
"text": "Добро пожаловать)))"
},
{
Если пробовать так:
with open('result.json') as f:
data = json.loads(f.read())
df = pd.json_normalize(data, ['chats', 'list', 'messages'])
то выводит только сообщения, без принадлежности к чату:
id type date date_unixtime from ...
0 1 message 2017-10-29T14:49:18 1509277758 -----
1 2 message 2017-10-29T15:04:33 1509278673 ------
2 3 message 2017-10-29T15:04:42 1509278682 ------
3 4 message 2017-10-29T15:14:00 1509279240 -----
4 5 message 2017-10-29T15:14:26 1509279266 ------
Если делать так:
df = pd.json_normalize(data, ['chats', 'list'])
то выводит только то, что было в "list":
name type id \
0 Человек personal_chat ---------
1 Человек1 personal_chat ---------
2 Человек2 personal_chat ---------
3 Человек3 personal_chat ---------
4 Человек3 personal_chat ---------
messages
0 [{'id': 1, 'type': 'message', 'date': '2017-10...
1 [{'id': 37486, 'type': 'message', 'date': '202...
2 [{'id': 26129, 'type': 'service', 'date': '202...
3 [{'id': 50080, 'type': 'message', 'date': '202...
4 [{'id': 35259, 'type': 'message', 'date': '202...
Как сделать так, чтобы к каждой строке, описывающей сообщение, как при
df = pd.json_normalize(data, ['chats', 'list', 'messages'])
добавлялся столбец с "list.name" : "Человек" для каждого чата?
Пробовала
df = pd.json_normalize(data, ['chats', 'list'], ['chats', 'list', 'name'])
выдает KeyError: 'list'.