尝试从OECD API获取多个指标时的关键错误:

时间:2018-11-12 15:06:03

标签: pandas indexing python-requests

我正在尝试使用以下代码将数据从OECD API下载到python中:

import requests
import pandas as pd

base = 'http://stats.oecd.org/sdmx-json/data/'
param = [('dataset', 'QNA'),
         ('country', ''),
         ('indicators', 'B1_GE.GYSA'),
         ('freq', 'Q'),
         ('start_period=2016-Q4','?startTime=2016-Q4')
        ]

series = '.'.join(x[1] for x in param[1:-1])
url = '{}{}/{}{}'.format(base, param[0][1], series, param[-1][1])

r = requests.get(url).json()

date_list = r['structure']['dimensions']['observation'][0]['values']
dates = pd.to_datetime([x['id'] for x in date_list])

areas = [v['name'] for v in r['structure']['dimensions']['series'][0]['values']]

title = r['structure']['dimensions']['series'][1]['values'][0]['name']

df = pd.DataFrame()

for i, area in enumerate(areas):
    s_key = '{}:0:0:0'.format(i)
    s_list = r['dataSets'][0]['series'][s_key]['observations']
    df[area] = pd.Series([s_list[val][0] for val in sorted(s_list, key=int)])
    df[area] = (((df[area] / df[area].shift()) ** 4) - 1) * 100


df.index = dates
df = df.dropna()
df.to_csv("C:\\Users\\pedro.salgado\\Documents\\Data\\OECD.csv", sep=";")

我目前有2个问题:

  1. df.index = dates不起作用,出现以下错误:
  

文件   “ C:/Users/pedro.salgado/PycharmProjects/Chico_Municipios/OECD.py”,   第34行,在               df.index =日期

     

文件“ C:\ Users \ pedro.salgado \ PycharmProjects \ Chico_Municipios \ venv \ lib \ site-packages \ pandas \ core \ generic.py”,   第3627行,位于 setattr               返回对象。 setattr (自身,名称,值)

     

pandas._libs.properties.AxisProperty中的文件“ pandas_libs \ properties.pyx”,第69行。设置

     

文件“ C:\ Users \ pedro.salgado \ PycharmProjects \ Chico_Municipios \ venv \ lib \ site-packages \ pandas \ core \ generic.py”,   _set_axis中的559行               self._data.set_axis(轴,标签)

     

文件“ C:\ Users \ pedro.salgado \ PycharmProjects \ Chico_Municipios \ venv \ lib \ site-packages \ pandas \ core \ internals.py”,   set_axis中的第3074行               (old_len,new_len))

     

ValueError:长度不匹配:预期轴有75个元素,新值有76个元素

显然,索引无法正常工作,因为数据行的值比df多得多,但是我不确定最简单的解决方法是什么。当我不索引df时,代码可以正常工作。有什么想法吗?

  1. 解决了第1个问题之后,脚本可以下载我的数据。但是,当我尝试通过将代码更改为

    来同时获得多个标记时

    ('indicators', 'B1_GE.GPSA+VIXOBSA')

它崩溃了,又出现了另一个错误:

  

回溯(最近通话最近一次):

     

文件“ C:/Users/pedro.salgado/PycharmProjects/Chico_Municipios/OECD.py”,   第29行,在           s_list = r ['dataSets'] [0] ['series'] [s_key] ['observations']

     

KeyError:'51:0:0:0'

0 个答案:

没有答案