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

API返回嵌套字典转DataFrame遇阻:如何解析items列嵌套数据?

解析API响应中嵌套字典列的解决方案

核心思路

先提取items列的嵌套数据并单独归一化,再将其与原DataFrame的其他字段合并,得到完全扁平化的目标DataFrame。

具体实现步骤

1. 初始处理API响应

先通过json_normalize获取初始DataFrame,此时items列仍为嵌套结构:

import pandas as pd

# 解析API响应得到初始DataFrame
df_initial = pd.json_normalize(response.json())

2. 提取并归一化items列数据

根据items列的结构(列表/单一字典)选择对应方式解析:

  • 如果items是列表类型:
# 展开items列并提取嵌套数据
items_list = df_initial['items'].explode().tolist()
# 归一化嵌套数据
df_items = pd.json_normalize(items_list)
  • 如果items是单一字典类型:
# 直接归一化该字典
df_items = pd.json_normalize(df_initial['items'].iloc[0])

3. 合并数据并导出

将原DataFrame中除items外的字段与归一化后的items数据合并:

# 处理原DataFrame的其他字段,重复对应行数以匹配items数据的长度
other_fields = df_initial.drop('items', axis=1).loc[df_initial.index.repeat(len(df_items))].reset_index(drop=True)

# 合并所有字段
final_df = pd.concat([other_fields, df_items], axis=1)

# 导出为CSV
final_df.to_csv('file1.csv', index=False)

深层嵌套的进阶处理

如果items内部还有多层嵌套结构,可以通过json_normalize的record_path和meta参数精准指定解析路径:

# 示例:解析items中details字段的深层嵌套,保留id、name作为元数据
df_items = pd.json_normalize(
    items_list,
    record_path=['details'],  # 指定要展开的深层嵌套字段
    meta=['id', 'name'],       # 指定要保留的顶层字段
    record_prefix='details_'   # 给展开的字段添加前缀,避免命名冲突
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:05:20