将 RESTful 输出转换为数据帧的最有效方法

Most efficient way of converting RESTful output to dataframe

我已将 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'])

这项工作没有一些操作以使其更易于使用,并且由于有多个时间序列,我可以为每个时间序列做一个相同的版本,但不用说它有点笨拙。

有没有 better/cleaner 方法来做到这一点。

没有任何回应,这是我想出的解决方案。我添加了一个列表理解来处理将每个系列放入一个数据框中,然后作为此源进行转置导致该系列跨行对齐而不是向下对齐列。

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

pandasdmx 库使这个超级简单:

import pandasdmx as sdmx

df = sdmx.Request('OECD').data(
  resource_id='MEI_FIN',
  key='IR3TIB.GBR+USA.M',
  params={'startTime': '2008-06', 'dimensionAtObservation': 'TimeDimension'},
).write()