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

如何将嵌套Python对象或JSON高效映射为pandas DataFrame并保留上层属性

解决方案

方法:使用pandas内置json_normalize直接处理原始JSON(效率最优)

该方法为pandas官方提供的嵌套JSON结构化方案,内部实现已做性能优化,无需手动编写冗余循环,也不会出现上层属性丢失的问题。

完整代码如下:

import json
import pandas as pd

# raw为你的原始JSON字符串
data = json.loads(raw)

df = pd.json_normalize(
    data,
    # 指定最内层需要展开为独立行的列表路径
    record_path=['Container', 'DistributionOptions', 'OptionSet', 'Lines'],
    # 指定需要保留的上层字段路径,这些字段会自动对应填充到每一行
    meta=[
        ['Container', 'DistributionOptions', 'OptionId'],
        ['Container', 'DistributionOptions', 'OptionSet', 'Location', 'Number']
    ]
)

# 调整列名和列顺序为目标格式
df = df.rename(columns={
    'Container.DistributionOptions.OptionId': 'OptionId',
    'Container.DistributionOptions.OptionSet.Location.Number': 'Location'
})[['OptionId', 'Location', 'OrderLineId', 'Quantity']]

如果你需要继续使用已生成的SimpleNamespace对象

只需要先将SimpleNamespace递归转换为字典,再调用上述json_normalize方法即可:

from types import SimpleNamespace

def sn_to_dict(obj):
    if isinstance(obj, SimpleNamespace):
        return {k: sn_to_dict(v) for k, v in vars(obj).items()}
    elif isinstance(obj, list):
        return [sn_to_dict(item) for item in obj]
    else:
        return obj

# 转换你已有的python_object
data = sn_to_dict(python_object)
# 后续使用和上面完全一致的json_normalize逻辑即可

最终输出的df完全匹配你给出的目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:30:02