запланировать запрос API и сохранить в датафрейме - PullRequest
1 голос
/ 16 февраля 2020

Я пытаюсь очистить данные от API. Я хочу запланировать эту задачу, чтобы она запрашивала API каждые полчаса и сохраняла, добавляя результат в информационный кадр. Тем не менее, ответ API - это вложенный словарь, поэтому я должен сделать несколько разборов. Я прочитал, что мне нужно списки вместо фреймов данных, чтобы добавить данные в функцию. Пока мой код выглядит так:

import pandas as pd
import requests
from pandas.io.json import json_normalize
import schedule
import time

resp = requests.get(url).json()
df=[]
def fetch_here():
        global df
        r2=json_normalize(resp,record_path=["RWS","RW"])
        r=json_normalize(resp["RWS"],record_path=["RW","FIS","FI"])
        r1=json_normalize(resp["RWS"],record_path=["RW","FIS","FI","CF"])
        workFrame = pd.concat([r, r1], axis=1, sort=False)
        workFrame = workFrame.drop(['SHP',"CF","SSS.SS"], 1)
        time=r2["PBT"]
        workFrame["Time"]=time
        workFrame=workFrame.fillna(method="ffill")
        df=df.append(workFrame)

#Time
schedule.every(30).minutes.do(fetch_here)

while True:
    schedule.run_pending()
    time.sleep(1)

Однако я получаю сообщение об ошибке: UnboundLocalError: local variable 'df' referenced before assignment. Я думаю, что было бы лучше сохранить результат анализа в виде списка, а затем добавить? Но я не знаю, как нормализовать список json. Надеюсь, кто-то может помочь. Спасибо.

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