For a personal project, I’m calling data from the Google Books API and uploading the fields I want to mySQL.
I’ve successfully made the API request and received data. The data received is nested and i want to place this in a dataframe. Now my code works with the “first” column (no indent). All data after, I cannot enter this in a dataframe.
A small part of the API output:
    {
  "kind": "books#volumes",
  "totalItems": 1,
  "items": [
    {
      "kind": "books#volume",
      "id": "vH_vwQEACAAJ",
      "etag": "Gzpw8EnKpVY",
      "selfLink": "https://www.googleapis.com/books/v1/volumes/vH_vwQEACAAJ",
      "volumeInfo": {
        "title": "Crash course programmeren in Python",
        "subtitle": "projectgericht leren programmeren",
Bellow is my python code:
import requests import pandas as pd import json request_string = "https://www.googleapis.com/books/v1/volumes?q=isbn:9789059056749&key=###KEY###" response = requests.get(request_string).text response_json = json.loads(response) response_json_normalized = pd.json_normalize(response_json) author_df = pd.DataFrame(data=response_json_normalized, columns=['title']) print(author_df)
When using columns=['totalItems'] the value 1 is in the Dataframe, but when using columns=['title'] it says NaN. The same goes for id for example.
Am i missing something simple? Or is my aproach wrong?
The goal is to eventually enter the data in a mySQL DB, to catalogue all the books I have. Any advice on future steps is appreciated!
Advertisement
Answer
This is working for me.
import requests
import pandas as pd
import json
from pandas import json_normalize
request_string = "https://www.googleapis.com/books/v1/volumes?q=isbn:9789059056749&key=###KEY###"
response = requests.get(request_string).text
response_json = json.loads(response)
recs = response_json['items']
df = json_normalize(recs)