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

Python中如何将嵌套字典数组转为指定列名的Pandas DataFrame?

问题:将嵌套字典数组转换为指定列名的DataFrame

给定嵌套字典数组如下:

data = [{ 'id':1, 
          'points': [{'name':'P01',
                    'coor' : {'x':1,'y':8}
                     },
                    {'name':'P02',
                    'coor' : {'x':2,'y':8}
                     }],
          },
          { 'id':2, 
          'points': [{'name':'P03',
                    'coor' : {'x':33,'y':8}
                     },
                    {'name':'P04',
                    'coor' : {'x':2,'y':18}
                     }],
          }]

使用pd.DataFrame.from_dict(data)转换后,得到的列是['id','points'],但期望输出的列名为['id','points:name','points:coor:x','points:coor:y'],可通过以下步骤实现:


解决方案

步骤1:展开数组型字段

先将points数组拆分为多行,每个数组元素对应一行,保留id关联:

import pandas as pd

df = pd.DataFrame(data).explode('points', ignore_index=True)

步骤2:扁平化嵌套字典

使用pd.json_normalize解析points中的嵌套结构,自动生成层次化列名:

df_points = pd.json_normalize(df['points'])

步骤3:合并列并重命名

将原id列与扁平化后的列合并,同时修改列名以匹配需求格式:

res = pd.concat([df[['id']], df_points], axis=1)
res.columns = ['id', 'points:name', 'points:coor:x', 'points:coor:y']

执行后打印列名:

print(res.columns)
# 输出:Index(['id', 'points:name', 'points:coor:x', 'points:coor:y'], dtype='object')

最终得到的DataFrame结构如下:

idpoints:namepoints:coor:xpoints:coor:y
1P0118
1P0228
2P03338
2P04218

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:27:49