Самый эффективный способ преобразования вывода RESTful в фрейм данных - PullRequest
1 голос
/ 05 июля 2019

У меня есть вывод из вызова REST, который я преобразовал в JSON.

Это коллекция вложенных диктовок и списков с высокой степенью вложенности, но в итоге я могу преобразовать ее в фрейм данных следующим образом:

import panads as pd
from requests import get 

url = 'http://stats.oecd.org/SDMX-JSON/data/MEI_FIN/IR3TIB.GBR+USA.M/all'
params = { 
        'startTime' : '2008-06',
        'dimensionAtObservation' : 'TimeDimension'
        }

r = get(url, params = params)
x = r.json()

d = x['dataSets'][0]['series']
a = pd.DataFrame(d['0:0:0']['observations'])
b = pd.DataFrame(d['0:1:0']['observations'])

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

Есть ли лучший / более чистый способ сделать это.

1 Ответ

0 голосов
/ 06 июля 2019

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

import panads as pd
from requests import get 

url = 'http://stats.oecd.org/SDMX-JSON/data/MEI_FIN/IR3TIB.GBR+USA.M/all'
params = { 
        'startTime' : '2008-06',
        'dimensionAtObservation' : 'TimeDimension'
        }

r = get(url, params = params)
x = r.json()

d = x['dataSets'][0]['series']
df = [pd.DataFrame(d[i]['observations']).loc[0] for i in d]
df = pd.DataFrame(df).T
...