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

如何将API响应中特定JSON数组解析为多行多列的Pandas DataFrame?

嵌套JSON趋势数据转多行Pandas DataFrame解决方案

核心思路

问题出在对嵌套JSON的处理方式上——你不需要对整个响应做全量归一化,直接提取trend数组即可生成多行结构的DataFrame。

代码实现

1. 基础版(仅处理"heart disease")

import requests
import pandas as pd

# 调用API(替换为你的实际请求参数)
api_url = "https://api.keywords.com/v1/get_keyword_data"
params = {"api_key": "your_api_key", "keywords": "heart disease"}  # 示例参数
response = requests.get(api_url, params=params)
response_data = response.json()

# 提取目标趋势数组
trend_list = response_data["data"]["heart disease"]["trend"]

# 直接转换为DataFrame
trend_df = pd.DataFrame(trend_list)

# 可选:添加关键词标识列
trend_df["keyword"] = "heart disease"

# 保存为CSV
trend_df.to_csv("heart_disease_trend.csv", index=False)

2. 进阶版(处理多个关键词)

如果API返回多个关键词的趋势数据,可循环遍历生成合并后的DataFrame:

import requests
import pandas as pd

api_url = "https://api.keywords.com/v1/get_keyword_data"
params = {"api_key": "your_api_key", "keywords": "heart disease,diabetes"}  # 多关键词示例
response = requests.get(api_url, params=params)
response_data = response.json()

all_trend_dfs = []
# 遍历每个关键词的趋势数据
for keyword, keyword_data in response_data["data"].items():
    df = pd.DataFrame(keyword_data["trend"])
    df["keyword"] = keyword
    all_trend_dfs.append(df)

# 合并所有数据
final_df = pd.concat(all_trend_dfs, ignore_index=True)
final_df.to_csv("multi_keyword_trends.csv", index=False)

关键说明

  • 之前的单行问题通常是因为误用pd.json_normalize()处理了整个嵌套结构,而trend本身就是标准的列表型数据,直接用pd.DataFrame()转换即可生成多行多列的结构。
  • 生成的DataFrame会自动将month、year、value设为独立列,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:05:25