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

如何将MongoDB嵌套文档转换为Python Pandas扁平化DataFrame表格

实现方法

方法1:直接用json_normalize处理MongoDB查询结果(最优方案)

你不需要先转成DataFrame再二次处理,直接把MongoDB返回的查询结果传给json_normalize,就能自动扁平化所有嵌套字段:

import pandas as pd
from pandas import json_normalize

# 直接读取MongoDB数据并完成扁平化展开
data = list(db.collection_name.find({}))
df = json_normalize(data)
print(df)

这个方法会自动把嵌套的address字段拆分为address.number、address.street、address.city三个独立列,完全匹配你需要的输出格式,不需要额外编写拆分逻辑。

方法2:针对已生成的原始DataFrame拆分address列

如果已经拿到了带完整address列的原始DataFrame,可以用以下代码手动完成拆分:

# 将address列的字典内容转为独立DataFrame,和原表拼接后删除原始address列
address_df = df['address'].apply(pd.Series)
address_df.columns = [f'address.{col}' for col in address_df.columns]
df = pd.concat([df.drop('address', axis=1), address_df], axis=1)

后续处理思路

  • 空值处理:如果部分文档没有address字段、或者address下缺少某个子字段,json_normalize会自动填充NaN,可以根据业务需求填充默认值或者删除无效空行
  • 多层嵌套扩展:如果存在更深层级的嵌套结构,json_normalize同样支持自动展开,不需要修改核心处理代码
  • 字段重命名:如果不需要address.这类前缀,展开完成后直接修改columns属性即可批量重命名列名
  • 性能优化:如果数据量较大,可以在MongoDB查询阶段就用$project运算符筛选需要的字段,能大幅降低Python端的处理压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:57:04