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

使用Pandas解析嵌套数据:优化字典列表转DataFrame方案

问题描述

我有一个结构复杂的字典列表,希望将其转换为DataFrame。其中每个字典对应DataFrame的一列,name字段为列名,values列表为列数据。数据示例如下:

data = [
    {
        "name": "pod_name",
        "type": "group",
        "values": [
            ["7b977b5d68-mdwfc"],
            ["d8b746cdf-hn5dx"],
            ["d8b746cdf-wmxdq"],
            ["d8b746cdf-8dv65"],
            ["d8b746cdf-9dn2c"],
            ["d8b746cdf-rh5c5"],
            ["d8b746cdf-q5fz6"],
            ["d8b746cdf-hvdmd"],
            ["d8b746cdf-fgzcj"],
            ["d8b746cdf-lhclk"]
        ]
    },
    {
        "name": "cpu_limit",
        "type": "number",
        "values": [
            2.5, 1.5, 1.5, 1.5, 1.5,
            1.5, 1.5, 1.5, 1.5, 1.5
        ]
    },
    {
        "name": "mem_limit",
        "type": "number",
        "values": [
            10737418240.0, 2147483648.0, 2147483648.0,
            2147483648.0, 2147483648.0, 2147483648.0,
            2147483648.0, 2147483648.0, 2147483648.0,
            2147483648.0
        ]
    }
]

目前我的实现方案如下:

df = pd.DataFrame()
for col in data:
    df[col['name']] = col['values']
print(df.head())

这个方案虽然简洁,但我想了解在Pandas 0.25版本下是否有更优的实现方式。


更优实现方案

首先需要注意:原方案中pod_name列的values是嵌套列表(每个元素都是单元素列表),直接赋值会导致列中存储的是列表对象而非字符串,需要先展平处理。在Pandas 0.25版本中,推荐用字典推导式一次性构造DataFrame,避免循环逐列赋值(循环赋值会多次触发DataFrame内部的索引和结构更新,数据量大时效率更低)。

实现代码

import pandas as pd

# 构造DataFrame输入字典:处理嵌套列表,生成列名-数据的映射
df_data = {
    col['name']: [x[0] for x in col['values']] if col['type'] == 'group' else col['values']
    for col in data
}

# 直接创建DataFrame
df = pd.DataFrame(df_data)
print(df.head())

输出示例

pod_name  cpu_limit    mem_limit
0  7b977b5d68-mdwfc        2.5  10737418240.0
1   d8b746cdf-hn5dx        1.5   2147483648.0
2   d8b746cdf-wmxdq        1.5   2147483648.0
3   d8b746cdf-8dv65        1.5   2147483648.0
4   d8b746cdf-9dn2c        1.5   2147483648.0

方案优势

  1. 更简洁高效:一次性构造DataFrame,避免循环中多次修改DataFrame的开销,尤其适合大规模数据场景。
  2. 可读性更强:通过字典推导式清晰表达列名与数据的映射关系,同时处理了嵌套列表的特殊情况。
  3. 符合Pandas风格:利用Pandas原生的字典输入构造逻辑,减少不必要的中间操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:03:25