首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >联合国教科文组织SDMX api数据进入pandas DataFrame

联合国教科文组织SDMX api数据进入pandas DataFrame
EN

Stack Overflow用户
提问于 2018-02-04 15:47:47
回答 1查看 205关注 0票数 0

我正在尝试从联合国教科文组织的data api下载一个表格,并将其转换为一个熊猫DataFrame。到目前为止,我已经走了这么远:

代码语言:javascript
复制
from pandasdmx import Request as rq
auth = {'Ocp-Apim-Subscription-Key': '...'}
uis = rq('unesco', headers = auth)

uis_resp = uis.get(resource_type = 'data',
               resource_id = 'RD',
               url = 'https://api.uis.unesco.org/sdmx//data/UNESCO,'
                   + 'RD'
                   + ',1.0/',                   
               params = {'key': '.CAP_PPP_CONST...........',
                         'format': 'sdmx-generic-2.1',
                         'subscription-key' : '...'})

uis_data = uis_resp.data
uis_iter = (s for s in uis_data.series) # Creating an iterator from the Series
data = uis_resp.write(list(uis_iter)) # Creating a dataframe

不幸的是,它给出了以下错误:

代码语言:javascript
复制
data = uis_resp.write(list(uis_iter)) # Creating a dataframe
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-2-db0f6c589a91> in <module>()
----> 1 data = uis_resp.write(list(uis_iter)) # Creating a dataframe

C:\Users\andras\Anaconda3\lib\site-packages\pandaSDMX-0.7.0-py3.6.egg\pandasdmx\api.py in write(self, source, **kwargs)
    633         if not source:
    634             source = self.msg
--> 635         return self._writer.write(source=source, **kwargs)
    636 
    637     def write_source(self, filename):

C:\Users\andras\Anaconda3\lib\site-packages\pandaSDMX-0.7.0-py3.6.egg\pandasdmx\writer\data2pandas.py in write(self, source, asframe, dtype, attributes, reverse_obs, fromfreq, parse_time)
    114                     pd_series, pd_attributes = zip(*series_list)
    115                 elif dtype:
--> 116                     key_fields = series_list[0].name._fields
    117                     pd_series = series_list
    118                 elif attributes:

IndexError: list index out of range

你知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-04 18:23:50

这很好用,pandasdmx的write()函数会自动创建一个Pandas DataFrame。

代码语言:javascript
复制
from pandasdmx import Request as rq

uis_key = '...'
auth = {'Ocp-Apim-Subscription-Key': uis_key}
uis = rq('UNESCO', headers = auth)

data = uis.data(
  resource_id='RD',
  key='.CAP_PPP_CONST...........',
  params={'subscription-key': uis_key}
).write()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48605898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档