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

Python实现JSON转CSV:提取指定键值对时NaN问题修复求助

修复嵌套JSON提取字段错位问题并导出CSV

问题背景

有如下嵌套结构的JSON数据:

data = {
    "type": "video",
    "videoID": "vid001",
    "links": [
        {"type": "video", "videoID": "vid002", "links": []},
        {"type": "video",
         "videoID": "vid003",
         "links": [
             {"type": "video", "videoID": "vid004"},
             {"type": "video", "videoID": "vid005"},
         ]
         },
        {"type": "video", "videoID": "vid006"},
        {"type": "video",
         "videoID": "vid007",
         "links": [
             {"type": "video", "videoID": "vid008", "links": [
                 {"type": "video",
                  "videoID": "vid009",
                  "links": [{"type": "video", "videoID": "vid010"}]
                  }
             ]}
         ]},
    ]
}

需要提取其中的videoID和type字段并转换为CSV文件,但原提取函数生成的DataFrame出现字段错位,部分行的videoID或type为NaN:

videoID   type
0   vid001    NaN
1      NaN  video
2   vid002    NaN
3      NaN  video
...

期望得到每个videoID对应正确type的结果:

videoID   type
0   vid001    video
1   vid002    video
2   vid003    video
...

解决方案

使用递归遍历嵌套JSON,每个节点同时提取videoID和type作为一行数据,再用pandas生成DataFrame并导出CSV:

import pandas as pd

def extract_video_data(node, result_list):
    # 提取当前节点的videoID和type
    if "videoID" in node and "type" in node:
        result_list.append({
            "videoID": node["videoID"],
            "type": node["type"]
        })
    # 递归处理子节点
    if "links" in node and isinstance(node["links"], list):
        for child in node["links"]:
            extract_video_data(child, result_list)

# 初始化结果列表
video_list = []
extract_video_data(data, video_list)

# 生成DataFrame并导出CSV
df = pd.DataFrame(video_list)
df.to_csv("video_data.csv", index=False)

说明

原代码出现错位的核心原因是:每次仅提取单个键值对(比如先取videoID再取type),导致一个节点对应两行数据。正确逻辑是每个节点一次性提取两个字段,将其封装为字典加入结果列表,确保每个节点对应DataFrame的一行,字段完全匹配。

运行上述代码后,生成的CSV文件会包含所有嵌套节点的videoID和type,且一一对应无错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:15:37