Как разобрать выбранные значения из вложенного JSON с помощью панд - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь разобрать только выбранные элементы из вложенного json.

ниже - мой файл json

{
"creation-date": "Fri Mar 23 07:03:31 UTC 2018",
  "scan-with-high-privileges": true,
  "system-infos": {
 
    "hostname": "vmDiscovery",
    "domain": "aw4gb5ukuefulow5njy3bfktkc.rx.internal.cloudapp.net",
    "os": "",
    "os-details": {
      "kernel-version": "Linux vmDiscovery 3.10.0-693.17.1.el7.x86_64 #1 SMP Sun Jan 14 10:36:03 EST 2018 x86_64 x86_64 x86_64 GNU/Linux",
      "lsb-id": "",
      "lsb-version-compliance": "",
      "lsb-description": "",
      "lsb-release": "",
      "lsb-codename": ""
    }
    }

Я пытаюсь получить доступ только к имени хоста и домену из системной информации. И я только читаю файл json с локальной машины и не вставляю полный файл.

Ниже мой код, который я пробовал

import pandas as pd
import json
from pandas.io.json import json_normalize

with open("C:\\Users\\esrilka\\Documents\\jsonFiles\\jsonFiles\\Mynew.json") as fi:
    d = json.load(fi)
    works_data3=pd.DataFrame(data=d['system-infos'],columns=['hostname','domain'])
    

Я получаю сообщение об ошибке при прохождении индекса.

Ожидаемый результат - введите описание изображения здесь

1 Ответ

0 голосов
/ 11 мая 2018

Я не совсем уверен, почему вы хотите передать это в панд.У вас есть только два столбца с одним значением для каждого из них.

Кроме того, pandas json loader на самом деле не предназначен для получения данных из ваших специальных файлов JSON, а для загрузки более обычных.

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

import json
import pandas as pd

with open('main.json', 'rb') as f:
    s = f.read()
    d = json.loads(s)
    d = { k: [d['system-infos'][k]] for k in ['hostname', 'domain'] }
    df = pd.DataFrame(d)
    print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...