如何在熊猫数据框中读取 mongodb 导出的 Json

Posted

技术标签:

【中文标题】如何在熊猫数据框中读取 mongodb 导出的 Json【英文标题】:How to read mongodb exported Json in pandas dataframe 【发布时间】:2019-04-13 06:57:37 【问题描述】:

我正在使用以下代码从 mongoDB 查询中导出 json:

 querywith open(r'/Month/Applications_test.json', 'w') as f:
for x in dic:
    json.dump(x, f, default=json_util.default)

运行良好并返回以下 json:


  "_class": "Application",
  "_id": "123",
  "applicationTimeStamp": 
    "$date": 1541466008000
  ,
  "createdDateTime": 
    "$date": 1541466008084
  


  "_class": "Application",
  "_id": "124",
  "applicationTimeStamp": 
    "$date": 1540080000000
  ,
  "createdDateTime": 
    "$date": 1540080000096
  


  "_class": "Application",
  "_id": "125",
  "applicationTimeStamp": 
    "$date": 1540080000000
  ,
  "createdDateTime": 
    "$date": 1540080000097
  

我正在使用以下 pandas 代码来尝试阅读它:

data_df = pd.read_json(r'/Month/Applications_test.json', lines = True)

我收到以下错误:

ValueError: Unexpected character found when decoding array value (2)

我想要的是一个熊猫数据框:

_class      | _id | applicationTimeStamp | createdDateTime
Application | 123 | 10/07/2018           | 10/07/2018
Application | 124 | 10/07/2018           | 10/07/2018
Application | 125 | 10/07/2018           | 10/07/2018

如何将上面的 json 读入 pandas 数据帧?

谢谢!

【问题讨论】:

您能粘贴一个您正在使用的文件中包含的数据的小示例吗?或者更好的是,使用StringIO 重现您遇到的错误。比我更熟悉这个的人可能在没有看到你的数据的情况下知道解决方案,但发布它不会有坏处 对不起,我不明白你对数据的意思?文件中的数据就是上面贴出来的json 您上面发布的数据是代码的输出,而不是实际数据,因此我无法运行您提供的代码并重现您遇到的错误。可重现代码块的示例是 json_string = StringIO(''' "name":"John", "age":100''') pd.read_json(json_string, lines=True) 这不会重现错误,但我不确定您的文件是什么样子才能重现错误。 【参考方案1】:

你必须以这种方式使用read_json:

df = pd.read_json(path_or_buf="file_path\json.txt",  typ='frame')

它返回一个数据框,如:

            _class  _id  applicationTimeStamp  createdDateTime
$date  Application  123         1541466008000    1541466008084

或:

        _class            ...                      createdDateTime
0  Application            ...             '$date': 1541466008084
1  Application            ...             '$date': 1540080000096
2  Application            ...             '$date': 1540000000097

然后你可以转换时间戳

【讨论】:

以上是关于如何在熊猫数据框中读取 mongodb 导出的 Json的主要内容,如果未能解决你的问题,请参考以下文章

如何(重新)命名熊猫数据框中的空列标题而不导出到csv

如何从存储在.csv中的熊猫数据框中读取np矩阵?

在熊猫数据框中读取嵌套 JSON 时遇到问题

如何使用熊猫从数据框中删除列?

如何在 pyspark 数据框中读取 csv 文件时读取选定的列?

删除熊猫数据框中的未命名列[重复]