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

如何将AESO API返回的嵌套JSON数据转换为包含指定字段的扁平化Pandas DataFrame

如何将AESO API返回的嵌套JSON数据转换为包含指定字段的扁平化Pandas DataFrame

看起来你已经成功从AESO API获取到了嵌套结构的JSON数据,现在需要把asset_list里的多层嵌套数据展开成包含asset_ID、asset_class、begin_date_utc、begin_date_mpt和metered_volume的扁平化DataFrame对吧?我们可以通过两次使用pd.json_normalize()来实现这个需求,下面是具体的步骤和代码:

步骤说明

你的JSON数据有两层核心嵌套:

  1. 顶层的return数组里,每个元素包含pool_participant_ID和asset_list数组
  2. asset_list里的每个元素又包含asset_ID、asset_class和metered_volume_list数组

我们需要先展开asset_list拿到资产基础信息,再展开里面的metered_volume_list得到时间维度的计量数据,同时保留所有需要的上层字段。

完整代码示例

import requests
import pandas as pd

API_KEY = 'api_key_here'
merit_order_url = 'https://api.aeso.ca/report/v1/meteredvolume/details?startDate=2022-01-01'
headers = {'accept': 'application/json', 'X-API-Key': API_KEY}

# 发起API请求并解析响应
response = requests.get(merit_order_url, headers=headers)
response.raise_for_status()  # 检查请求是否成功,失败则抛出异常
data = response.json()

# 第一步:展开asset_list,同时保留pool_participant_ID(不需要的话可删除meta参数)
df_assets = pd.json_normalize(
    data['return'],
    record_path='asset_list',  # 指定要展开的嵌套数组
    meta='pool_participant_ID'  # 保留上层的参与者ID字段
)

# 第二步:展开每个资产对应的metered_volume_list,保留资产相关字段
final_df = pd.json_normalize(
    df_assets.to_dict('records'),  # 将DataFrame转为字典列表供json_normalize处理
    record_path='metered_volume_list',
    meta=['pool_participant_ID', 'asset_ID', 'asset_class']  # 保留需要的资产相关字段
)

# 可选优化:将metered_volume从字符串转为数值类型,方便后续分析计算
final_df['metered_volume'] = pd.to_numeric(final_df['metered_volume'])

# 查看结果
print(final_df.head())

代码解释

  • response.raise_for_status():这一步是为了确保API请求成功,如果返回4xx/5xx错误会直接抛出异常,避免后续处理无效数据。
  • 第一次json_normalize:把每个参与者对应的asset_list展开成单独的行,同时带上pool_participant_ID,这样我们就得到了每个资产的基础信息和对应的计量数据列表。
  • 第二次json_normalize:把每个资产的metered_volume_list展开成单独的行,同时保留资产ID、类型和参与者ID,最终得到完全扁平化的DataFrame,每一行对应一个资产在某个时间点的计量数据。
  • 转换metered_volume类型:原始JSON里的计量值是字符串格式,转为数值类型后可以直接进行求和、均值等统计操作。

这样处理后,你就得到了包含所有需要字段的DataFrame,完全符合你的需求~

备注:内容来源于stack exchange,提问作者user17059762

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 16:03:03