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

Python Pandas:如何将JSON多值属性导出为多行CSV?代码调试求助

调试建议与修正方案

你的问题核心在于没有为每个relative条目创建独立的行,反而在循环中不断覆盖同一个temp字典的字段值,最终每个key只保留了最后一个条目,所以只生成了1行数据。我们需要调整逻辑,为每个relative条目生成单独记录,同时处理不同key下条目数量不一致的情况。

问题根源拆解

  • 你的代码遍历data1的key时,内层循环会把当前key的第j个relative.id赋值给temp[key],但每次循环都会覆盖之前的值,最终每个key仅保留最后一个条目。
  • 没有考虑不同key下的条目数量差异(比如XXXX只有1个,YYYYY有2个),需要为多出来的条目补全基础信息,并把无对应值的字段设为NaN。

修正后的代码

import pandas as pd

json_file = {
    "data": [
        {
            "Empid": "1234",
            "Empname": "ABC",
            "data1": {
                "XXXX": [{"relative": {"id": "Naveen"}}],
                "YYYYY": [{"relative": {"id": "Kumar"}}, {"relative": {"id": "Rajesh"}}]
            }
        }
    ]
}

df_list = []
# 遍历每个员工的基础数据
for emp in json_file['data']:
    emp_base = {
        'Empid': emp['Empid'],
        'Empname': emp['Empname']
    }
    # 整理data1中每个key对应的所有relative id
    data1_id_dict = {}
    max_entry_count = 0
    for key, entries in emp['data1'].items():
        id_list = [item['relative']['id'] for item in entries]
        data1_id_dict[key] = id_list
        # 记录最多的条目数,用来生成对应行数
        if len(id_list) > max_entry_count:
            max_entry_count = len(id_list)
    
    # 按最大条目数生成每行记录
    for idx in range(max_entry_count):
        row = emp_base.copy()
        for key, ids in data1_id_dict.items():
            # 当前索引有值则取,无则填充空值(对应CSV的NaN)
            row[key] = ids[idx] if idx < len(ids) else pd.NA
        df_list.append(row)

# 生成DataFrame并导出CSV
final_df = pd.DataFrame(df_list)
print(final_df.to_csv(index=False))

代码逻辑说明

  1. 提取员工基础信息:先把每个员工的Empid和Empname存为基础字典,避免重复生成。
  2. 整理各key的id列表:把data1中每个key对应的所有relative.id收集成列表,同时记录最长的列表长度(这里是2,对应YYYYY的条目数)。
  3. 生成每行记录:循环最长长度的次数,每次复制基础信息,为每个key填充对应索引的id,索引超出列表长度时填充pd.NA(对应CSV里的NaN)。
  4. 合并生成CSV:把所有行字典收集到列表中,转为DataFrame后导出为CSV。

输出结果

运行后会得到你期望的两行CSV:

Empid,Empname,XXXX,YYYYY
1234,ABC,Naveen,Kumar
1234,ABC,,Rajesh

(注:CSV中的空值显示为空,用Excel等工具打开会自动识别为NaN)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:54:01