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

Pandas DataFrame转JSON后导入MongoDB遇解码错误求助

解决MongoDB导入Pandas生成的JSON文件报错问题

我来帮你分析一下问题所在,以及如何解决:

问题根源

你当前的代码犯了一个小错误:df.to_json(orient='index')已经生成了一个合法的JSON字符串,但你紧接着又用json.dump(xx, outfile)把这个字符串当作普通文本写入文件。这会导致最终的JSON文件内容是一个被双引号包裹的长字符串(相当于把JSON转义了),而不是MongoDB期望的JSON对象结构,所以mongoimport无法正确解析。

解决方案一:直接写入DataFrame生成的JSON

最简单的方法是跳过中间的json模块调用,直接让Pandas把JSON写入文件:

import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], index=['2018-03-27 09:30:00', '2018-03-27 09:31:00'], columns=['UNH', 'V'])
# 直接生成并写入JSON文件,orient='index'保持你的原有结构
df.to_json('x_try.json', orient='index', indent=2)

此时文件里的内容是标准的JSON对象:

{
  "2018-03-27 09:30:00": {
    "UNH": 1,
    "V": 2
  },
  "2018-03-27 09:31:00": {
    "UNH": 3,
    "V": 4
  }
}

然后直接用你最初的mongoimport命令即可成功导入:

mongoimport --db db_name --collection c_name --file x_try.json

解决方案二:先解析JSON字符串再写入

如果你一定要使用json模块,需要先把Pandas生成的JSON字符串解析成Python字典,再写入文件:

import pandas as pd
import json

df = pd.DataFrame([[1, 2], [3, 4]], index=['2018-03-27 09:30:00', '2018-03-27 09:31:00'], columns=['UNH', 'V'])
xx = df.to_json(orient='index')
# 将JSON字符串解析为Python字典
data_dict = json.loads(xx)
with open('x_try.json', 'w') as outfile:
    json.dump(data_dict, outfile, indent=2)

这样得到的文件内容和方案一完全一致,同样可以用原命令导入。

更推荐的MongoDB文档结构

另外,从MongoDB的使用习惯来说,把每个时间点的数据作为一个独立文档会更便于查询和操作。你可以调整Pandas的输出格式:

import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], index=['2018-03-27 09:30:00', '2018-03-27 09:31:00'], columns=['UNH', 'V'])
# 将索引转为普通列,并命名为timestamp
df.reset_index(inplace=True)
df.rename(columns={'index': 'timestamp'}, inplace=True)
# 生成JSON数组格式的文件
df.to_json('x_try.json', orient='records', indent=2)

此时文件内容是JSON数组:

[
  {
    "timestamp": "2018-03-27 09:30:00",
    "UNH": 1,
    "V": 2
  },
  {
    "timestamp": "2018-03-27 09:31:00",
    "UNH": 3,
    "V": 4
  }
]

导入时需要加上--jsonArray选项:

mongoimport --db db_name --collection c_name --file x_try.json --jsonArray

这样每个时间点的数据都会成为MongoDB集合中的一个单独文档,后续查询特定时间或字段会更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:34:51