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

Pythonic方式:从两层嵌套字典列表创建DataFrame的最优方法

嵌套字典结构转目标DataFrame的Pythonic实现

首先给出你的固定输入结构示例,方便对应代码逻辑:

# 固定不可修改的输入结构示例
input_data = {
    "inputs": [
        {
            "TimeGenerated": "2024-05-20 12:00:00",
            "counters": {
                "counter1": 12.34,
                "counter2": 56.78,
                "counter3": 90.12
            }
        },
        # 其余结构一致的元素
    ]
}

方案1:使用pandas内置json_normalize(最推荐,易维护)

这是pandas专门为嵌套结构化数据提供的原生转换方法,不需要手动遍历字段,代码简洁度最高:

import pandas as pd

df = pd.json_normalize(input_data["inputs"]).rename(
    columns=lambda col: col.removeprefix("counters_")
)

说明:json_normalize会自动把嵌套的counters下的字段压平为counters_counter1格式,通过removeprefix直接去掉前缀即可得到目标列名。Python 3.9+支持removeprefix方法,如果是低版本Python可以替换为col.replace("counters_", "")。

方案2:生成器表达式解包(大数量级更高效)

如果处理的输入数据量超过10万条,想要更低的内存占用和更快的处理速度,可以用字典解包+生成器表达式实现,不需要提前生成完整的单层字典列表:

import pandas as pd

df = pd.DataFrame(
    {"TimeGenerated": item["TimeGenerated"], **item["counters"]}
    for item in input_data["inputs"]
)

说明:通过**解包counters内的所有键值对,直接和TimeGenerated拼接为单层字典,生成器表达式避免了额外的内存开销,适合超大批量数据处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:57:03