You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python调用SingStat TableBuilder API下载数据仅返回元数据的问题

解决SingStat TableBuilder API仅返回元数据的问题

问题说明

你尝试通过SingStat TableBuilder API获取指定表格的数据,但当前代码仅返回元数据,无法拿到实际数值数据。

问题原因

  1. 请求参数设置不合理:比如seriesNoORrowNo的取值可能对应不到有效数据行,或者timefilter、search等筛选条件限制过严,导致没有匹配到数据条目。
  2. 未完整查看API响应结构:可能实际数据存在于响应的其他字段中,或者参数错误导致Data字段为空。

解决方案

1. 简化参数,先验证基础请求

先去掉不必要的筛选参数,确认API能正常返回数据:

import requests
import pandas as pd

# 简化请求,先获取表格的完整基础数据
url_path = "https://tablebuilder.singstat.gov.sg/api/table/tabledata/M250141"
response = requests.get(url_path)

if response.ok:
    data = response.json()
    # 先打印响应的所有键,确认结构
    print("API响应包含的字段:", list(data.keys()))
    
    # 检查Data字段是否有内容
    if data.get('Data'):
        df_SG_DATA = pd.DataFrame(data['Data'])
        print("获取到的数据:\n", df_SG_DATA)
    else:
        print("未获取到数据,可查看元数据确认表格结构:")
        if 'MetaData' in data:
            print(data['MetaData'])
else:
    print(f"请求失败,状态码: {response.status_code}")

2. 调整筛选参数

  • 核对seriesNoORrowNo:这个参数对应表格中的行/系列编号,需要在网页版表格中确认目标数据对应的正确编号,确保不是13.1取值错误。
  • 调整时间范围:如果仅指定2013 1Q,可能该时间点无对应数据,尝试扩大范围,比如使用timefilter=2013%201Q%2C2024%204Q(表示2013年第一季度到2024年第四季度)。
  • 移除不必要的筛选:暂时去掉search=land、between=0%2C4等参数,先拿到完整数据后再做筛选。

3. 参考官方API文档

回到开发者页面,仔细核对每个参数的定义:比如seriesNoORrowNo的取值规则、timefilter的格式要求、limit和offset的分页逻辑,确保参数完全符合API要求。

内容的提问来源于stack exchange,提问作者prashanth manohar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:42:25