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

求助:MongoDB单行JSON文档转Pandas DF/CSV操作是否正确

把MongoDB每行JSON文档转成Pandas DataFrame/CSV的正确姿势

嘿,我来帮你搞定这个转换问题!你手动给每行加逗号、把整个文档包在[]里的思路其实是对的——本质是把零散的JSON对象转成一个JSON数组,这样json.loads能解析,但手动操作很容易踩坑(比如最后一行多加个逗号就会导致语法错误),不如用更高效可靠的方法,我给你分几种情况讲:

方法一:直接用Pandas读取(推荐!)

Pandas本身就支持读取每行一个JSON对象的文件,完全不用手动修改原文档,一行代码搞定:

import pandas as pd

# 读取每行是独立JSON的文件,自动转为DataFrame
df = pd.read_json('你的MongoDB文档文件名.json', lines=True)

# 转成CSV保存(index=False去掉自动生成的索引列)
df.to_csv('输出文件名.csv', index=False)

这个方法的好处是:

  • 不用碰原文件,避免手动修改带来的语法错误
  • 自动处理每行的JSON解析,哪怕文件很大也能高效处理
  • 如果有嵌套的JSON字段,Pandas会默认存为object类型,后续可以用json_normalize展开(后面会讲)

方法二:如果你已经手动修改了文件(加了[]和逗号)

要是你已经把文件改成了JSON数组格式,记得检查最后一个JSON对象后面不要加逗号!正确的格式应该是这样:

[
{"id" : "12345id" , "price" : 202.4, "order_id" : "bc2341"},
{"id" : "67890id" , "price" : 180.5, "order_id" : "ef6789"}
]

如果最后一行多了逗号(比如},]),json.loads会直接报错。确认格式正确后,用下面的代码转换:

import json
import pandas as pd

# 读取修改后的JSON数组文件
with open('修改后的文件名.json', 'r', encoding='utf-8') as f:
    json_data = json.load(f)

# 转成DataFrame
df = pd.DataFrame(json_data)

# 保存为CSV
df.to_csv('输出文件名.csv', index=False)

进阶:处理嵌套JSON字段

如果你的MongoDB文档里有嵌套的结构(比如某个字段是子JSON),可以用json_normalize把嵌套字段展开成单独的列:

import json
from pandas import json_normalize

# 逐行读取原JSON文件,解析成Python列表
with open('你的MongoDB文档文件名.json', 'r', encoding='utf-8') as f:
    data = [json.loads(line.strip()) for line in f if line.strip()]

# 展开嵌套字段生成DataFrame
df = json_normalize(data)

# 保存CSV
df.to_csv('展开后的输出.csv', index=False)

处理超大型文件

如果你的文件特别大,内存装不下,可以用Pandas的分块读取功能:

import pandas as pd

# 每次读取10000行,避免内存溢出
chunk_size = 10000
chunk_list = []

# 逐块读取并处理
for chunk in pd.read_json('超大型文件.json', lines=True, chunksize=chunk_size):
    chunk_list.append(chunk)

# 合并所有块成一个DataFrame
df = pd.concat(chunk_list, ignore_index=True)

# 保存CSV
df.to_csv('大型文件输出.csv', index=False)

总结一下:优先用方法一,既省事又不容易出错;手动修改文件的话一定要注意JSON数组的语法正确性;遇到嵌套结构或者超大型文件,用对应的进阶方法就好~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:35:16