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

如何使用Pandas DataFrame处理JSON后还原为原JSON格式

DataFrame转回指定嵌套JSON格式实现方法

核心逻辑是拆分打平后的两类字段:外层固定的product嵌套结构、order数组对应的记录列表,分别重构后组装为目标结构即可,无需依赖额外第三方库,完整实现代码如下:

import pandas as pd
import json

# 已完成的打平、缺失值填充逻辑
df = pd.json_normalize(
    data, 
    record_path =['order'], 
    meta=[
        ['product', 'a'],
        ['product', 'b']
    ]
)
# 注意填充值用字符串"0",匹配目标输出的格式要求
df = df.fillna("0")

# 转回嵌套JSON核心逻辑
result = {
    # 重构product嵌套结构:所有行的product值一致,取第一行数据即可
    "product": {
        "a": df["product.a"].iloc[0],
        "b": df["product.b"].iloc[0]
    },
    # 提取order对应列,转为字典列表,自动保留补全的food、amount字段
    "order": df[["code", "qty", "food", "amount"]].to_dict(orient="records")
}

# 如需输出格式化的JSON字符串,执行以下代码
output_json_str = json.dumps(result, indent=4, ensure_ascii=False)
print(output_json_str)

运行后输出结果和预期完全一致:

{
    "product": {
        "a": "apple",
        "b": "banana"
    },
    "order": [
        {
            "code": "123",
            "qty": "1",
            "food": "apple x10|banana x2",
            "amount": "200"
        },
        {
            "code": "bundle",
            "qty": "1",
            "food": "0",
            "amount": "0"
        }
    ]
}

注意事项

  • 缺失值填充不要用数字0:目标输出中补全的food、amount字段为字符串格式"0",填充数字0会导致转JSON后输出数值类型,和预期不符。
  • 转换order列表时显式指定列:打平后的DataFrame带有product.a、product.b外层字段,显式指定order相关列可以避免这些字段错误出现在order子对象中。
  • 原始测试JSON存在语法错误:示例中第二个order对象的"code":"bundle"行末尾缺失逗号,实际加载JSON时需要补全,否则会触发解析报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:36:07