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

如何将NOAA API返回的波士顿逐小时气象JSON转为Python DataFrame

解决方法

你之前的代码错误在于直接将forecast['properties']转为DataFrame,但每个气象变量(比如temperature)的实际数据都嵌套在values字段里,包含validTime和对应数值。可以写一个通用函数来提取这类变量,后续降水、降雪等都能复用:

import requests
import pandas as pd

# 获取数据
response = requests.get("https://api.weather.gov/gridpoints/BOX/70,76")
forecast = response.json()
properties = forecast['properties']

# 定义通用提取函数
def extract_var_to_df(var_name, properties):
    # 提取目标变量的values数组
    var_data = properties[var_name]['values']
    # 转为DataFrame
    df = pd.DataFrame(var_data)
    # 拆分validTime的起始时间(原格式为"起始时间/结束时间")
    df['validTime'] = df['validTime'].str.split('/', expand=True)[0]
    # 重命名value列为对应的变量名
    df = df.rename(columns={'value': var_name})
    return df[['validTime', var_name]]

# 提取温度数据
temp_df = extract_var_to_df('temperature', properties)
print(temp_df.head())

# 提取其他变量示例
precip_df = extract_var_to_df('quantitativePrecipitation', properties)
snow_df = extract_var_to_df('snowfallAmount', properties)
humidity_df = extract_var_to_df('relativeHumidity', properties)

说明

  • 函数extract_var_to_df会自动处理每个气象变量的嵌套结构,拆分出validTime的起始时间(匹配你预期的格式),并将数值列重命名为对应变量名。
  • 处理后的DataFrame结构与你预期一致:第一列为时间,第二列为对应气象数值。
  • 后续处理其他变量时,只需调用该函数并传入变量名即可,无需重复编写提取逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:56:03