如何调整Pandas代码适配OECD新版统计API以正常获取数据?
调整OECD新版API代码的解决方案
要让代码适配OECD新版API,需要从以下几个方面调整:
- 替换API基础请求前缀
默认的pdmx.Request("OECD")调用的是旧版API地址,我们需要自定义数据源配置,指定新版的base_url:
import pdmx # 配置新版OECD API的数据源信息 oecd_new_config = { "OECD_NEW": { "url": "https://sdmx.oecd.org/public/rest/data/", "headers": {}, "timeout": 30, } } # 用自定义配置初始化Request实例 oecd = pdmx.Request("OECD_NEW", config=oecd_new_config)
- 规范请求参数的传递方式
新版API要求startPeriod这类参数单独传递,不能混在key字符串里,同时resource_id要符合SDMX标准格式:
# 请求HH_DASH数据集,指定维度、时间范围等参数 data = oecd.data( resource_id="OECD.SDD.NAD,DSD_HHDASH@DF_HHDASH_CTRY,1.0", key="Q.DEU..", # 维度结构:频率.国家..(按需调整维度值) startPeriod="2021-Q3", dimensionAtObservation="AllDimensions" ).to_pandas()
- 修复语法错误
原代码最后一行把变量赋值和变量名写在同一行,拆分后修正为:
df = pd.DataFrame(data).reset_index() # 可打印查看结果 print(df)
完整可运行代码
import pdmx import pandas as pd # 配置新版OECD API地址 oecd_new_config = { "OECD_NEW": { "url": "https://sdmx.oecd.org/public/rest/data/", "headers": {}, "timeout": 30, } } oecd = pdmx.Request("OECD_NEW", config=oecd_new_config) # 请求目标数据 data = oecd.data( resource_id="OECD.SDD.NAD,DSD_HHDASH@DF_HHDASH_CTRY,1.0", key="Q.DEU..", startPeriod="2021-Q3", dimensionAtObservation="AllDimensions" ).to_pandas() # 转换为DataFrame并重置索引 df = pd.DataFrame(data).reset_index() print(df)
如果需要批量请求多个国家或指标,只需调整key中的维度值即可,比如请求多国家可写成Q.AUS+DEU+ITA..,指标维度需对应数据集的具体编码。
内容的提问来源于stack exchange,提问作者paul
相关产品推荐
相关产品推荐

