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

如何正确解析REST接口数据并生成Pandas DataFrame(美国干旱监测案例)

从美国干旱监测REST接口获取数据并转为Pandas DataFrame

我需要通过REST服务获取美国干旱监测(U.S. Drought Monitor)数据,示例请求URL如下:

url = "https://usdmdataservices.unl.edu/api/HUCStatistics/GetDroughtSeverityStatisticsByArea?aoi=10190016&startdate=1/1/2022&enddate=12/31/2022&statisticsType=2"

我想把返回的数据读取到Python中并生成指定结构的Pandas DataFrame,但目前用Beautiful Soup解析后得到了一段长字符串,显然操作有误,现有代码如下:

from bs4 import BeautifulSoup
import requests

page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
text = soup.get_text()[2:-2]

期望得到的DataFrame结构如下:

indexHUCIdMapDateHUCHUCLevelNoneD0D1D2D3D4ValidStartValidEndStatisticFormatID
01019001620221227Lower Lodgepole80.000.000.000.001,334.130.002022-12-272023-01-022

正确处理方式

这个REST接口返回的是JSON格式数据,不需要用Beautiful Soup(用于解析HTML/XML),直接读取JSON并转换为DataFrame即可:

  1. 导入所需库:
import requests
import pandas as pd
  1. 发送请求并解析JSON:
url = "https://usdmdataservices.unl.edu/api/HUCStatistics/GetDroughtSeverityStatisticsByArea?aoi=10190016&startdate=1/1/2022&enddate=12/31/2022&statisticsType=2"

# 发送GET请求并获取JSON响应
response = requests.get(url)
data = response.json()

# 转换为DataFrame
df = pd.DataFrame(data)
  1. 可选:处理数值格式(比如D3列的千分位逗号):
    如果需要将带千分位的字符串转为数值类型,可以用以下代码:
# 遍历干旱等级列,去除逗号并转为浮点型
drought_cols = ['None', 'D0', 'D1', 'D2', 'D3', 'D4']
for col in drought_cols:
    df[col] = df[col].str.replace(',', '').astype(float)

最终效果

执行上述代码后,df就会生成你期望的DataFrame结构,包含所有指定列和对应数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:05:07