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

如何无需两次归一化再合并,直接从含多字典列表的字典创建DataFrame?

问题

现有实现是对dummy_data中的key3list和key4list分别调用pd.json_normalize生成key3_df、key4_df,再通过pd.merge合并得到目标DataFrame。请问是否存在更高效的方法,无需两次归一化再合并,直接从给定数据生成目标DataFrame?

数据

dummy_data = {
    "key1": "val1",
    "key2": "val2",
    "key3list": [
        {
            "key3nestedkey1": "val3list1nested1",
            "key3nestedkey2": "val3list1nested2"
        },
        {
            "key3nestedkey1": "val3list2nested1",
            "key3nestedkey2": "val3list2nested2"
        }
    ],
    "key4list": [
        {
            "key4nestedkey1": "val4list1nested1",
            "key4nestedkey2": "val4list1nested2"
        },
        {
            "key4nestedkey1": "val4list2nested1",
            "key4nestedkey2": "val4list2nested2"
        }
    ]
}

现有代码

import pandas as pd

key3_df = pd.json_normalize(dummy_data, "key3list", ["key1", "key2"])
key4_df = pd.json_normalize(dummy_data, "key4list", ["key1", "key2"])

df = pd.merge(key3_df, key4_df, on=["key1", "key2"])

预期输出

key3nestedkey1      key3nestedkey2 key1 key2    key4nestedkey1      key4nestedkey2
0  val3list1nested1  val3list1nested2 val1 val2  val4list1nested1  val4list1nested2
1  val3list1nested1  val3list1nested2 val1 val2  val4list2nested1  val4list2nested2
2  val3list2nested1  val3list2nested2 val1 val2  val4list1nested1  val4list1nested2
3  val3list2nested1  val3list2nested2 val1 val2  val4list2nested1  val4list2nested2
解决方案

可以直接构造key3list和key4list的笛卡尔积,再结合顶层的key1、key2字段,一步生成目标DataFrame,无需两次归一化和合并操作:

import pandas as pd
from itertools import product

# 提取顶层公共字段
common = {"key1": dummy_data["key1"], "key2": dummy_data["key2"]}
# 生成两个列表的笛卡尔积,合并每个组合的字典并添加公共字段
data = [{**k3, **k4, **common} for k3, k4 in product(dummy_data["key3list"], dummy_data["key4list"])]
# 直接生成目标DataFrame
df = pd.DataFrame(data)

这个方法利用itertools.product生成两个列表所有元素的组合,通过字典解包合并每个组合的键值对,最后传入pd.DataFrame即可得到预期结果。相比原方法,减少了两次json_normalize和一次merge的操作开销,逻辑更直接,执行效率也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:46:32