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

如何使用Python将嵌套结构DataFrame展开为普通独立行列格式

问题说明

现有如下结构的Python列表数据集,部分记录包含嵌套的attachments字段,部分记录无该嵌套字段,需要将其处理为字段独立成列、数据规整成行的标准二维表格格式。

raw_data = [
    {'id': '3253465436', 'attachments': {'data': [{'title': "Photos from  post"}]}},
    {'id': '248139211995219_440165304779172'}
]
解决方法

直接使用pandas内置的嵌套结构处理函数实现即可,自动兼容缺失字段场景,不需要手动写循环判断字段是否存在。

方法1:两步展平法(兼容性最好,保留所有原始行)

该方法会保留所有原始记录,无附件的记录对应附件字段自动填充空值;如果单条记录包含多个附件,会自动拆分为多行与原id匹配。

import pandas as pd

# 1. 先展平外层嵌套,把attachments下的data字段提取为独立列
df = pd.json_normalize(raw_data)

# 2. 将存储附件列表的列拆分为独立行,空列表/空值自动保留
df = df.explode('attachments.data').reset_index(drop=True)

# 3. 将附件字典内的字段拆分为独立列
df = pd.concat(
    [df.drop(columns=['attachments.data']), df['attachments.data'].apply(pd.Series)],
    axis=1
)

处理完成后的输出结果:

id             title
0                        3253465436  Photos from  post
1  248139211995219_440165304779172               NaN

方法2:单步展平(适合只保留有附件的记录场景)

如果不需要保留无附件的记录,可以直接指定展开路径单步完成:

df = pd.json_normalize(
    raw_data,
    record_path=['attachments', 'data'],
    meta=['id'],
    errors='ignore'
)
注意事项
  • 如果附件字典内包含除title外的其他字段,上述代码会自动识别并拆分为独立列,无需手动指定列名
  • 空值默认填充为NaN,可根据需求通过df.fillna('')替换为空字符串
  • 如果不需要将多附件拆分为多行,可按id分组后对附件字段做聚合,比如将多个title合并为列表存储在同一单元格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:57:20