Определите заголовки в JSON с пандами

У меня есть этот файл JSON

*[
  {
    "name": "Kitty",
    "species" : "cat",
    "foods": {
      "likes": ["fresh food"],
      "dislikes": ["stale food"]
    }
  },
  {
    "name": "Pupster",
    "species" : "dog",
    "foods": {
      "likes": ["tomatoes", "peas"],
      "dislikes": ["bread"]
    }
  },
  {
    "name": "Tux",
    "species" : "cat",
    "foods": {
      "likes": ["fancy dishes"],
      "dislikes": ["basic cat food"]
    }
  }
]*

Я прочитал этот файл таким образом:

    content = requests.get("https://raw.githubusercontent.com/LearnWebCode/json-example/master/animals-3.json") 
data = json.loads(content.content)
df = pd.DataFrame(data)

Но я хочу читать только заголовки файлов JSON и сохранять их в списке. У меня есть этот код, который выполняет аналогичную функцию

 getcolumns = list(df.columns.values)

но я получаю только следующее

  • название
  • разновидность
  • еда

И я хочу добиться следующего:

  • название
  • разновидность
  • еда
  • нравится
  • не любит

Я новичок в использовании Pandas, принимаются любые предложения

«нравится» и «не нравится» находятся в категории «еда», если вы разделите эти 2 дальше, то в столбце «еда» ничего не будет. таблица будет содержать «имя», «виды», «нравится» и «не нравится»

Jessica 21.02.2019 22:51
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
1
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

понимание списка должно работать:

j = [
  {
    "name": "Kitty",
    "species" : "cat",
    "foods": {
      "likes": ["fresh food"],
      "dislikes": ["stale food"]
    }
  },
  {
    "name": "Pupster",
    "species" : "dog",
    "foods": {
      "likes": ["tomatoes", "peas"],
      "dislikes": ["bread"]
    }
  },
  {
    "name": "Tux",
    "species" : "cat",
    "foods": {
      "likes": ["fancy dishes"],
      "dislikes": ["basic cat food"]
    }
  }
]

getcolumns = [x for x in j[0]] + [x for x in j[0]['foods']]
# ['name', 'species', 'foods', 'likes', 'dislikes']

или если вам нужен фрейм данных:

from pandas.io.json import json_normalize
df = json_normalize(j)

     foods.dislikes       foods.likes     name species
0      [stale food]      [fresh food]    Kitty     cat
1           [bread]  [tomatoes, peas]  Pupster     dog
2  [basic cat food]    [fancy dishes]      Tux     cat

Другие вопросы по теме