Ожидаемый объект или значение: импорт JSON в Python (Pandas) - PullRequest
0 голосов
/ 06 марта 2019

Я использую Python 3, и я пытался с

data = pd.read_json('file.json',encoding="utf-8",orient='records',lines=True)

Но это дает мне:

ValueError: Ожидаемый объект или значение

Это структура файла Json, просто быстрый пример

{ 
"_id" : ObjectId("5af1b1fd4f4733eacf11dba9"), 
"centralPath" : "XXX2", 
"viewStats" : [
    {
        "totalViews" : NumberInt(3642), 
        "totalSheets" : NumberInt(393), 
        "totalSchedules" : NumberInt(427), 
        "viewsOnSheet" : NumberInt(1949), 
        "viewsOnSheetWithTemplate" : NumberInt(625), 
        "schedulesOnSheet" : NumberInt(371), 
        "unclippedViews" : NumberInt(876), 
        "createdOn" : ISODate("2017-10-13T18:06:45.291+0000"), 
        "_id" : ObjectId("59e100b535eeefcc27ee0802")
    }, 
    {
        "totalViews" : NumberInt(3642), 
        "totalSheets" : NumberInt(393), 
        "totalSchedules" : NumberInt(427), 
        "viewsOnSheet" : NumberInt(1949), 
        "viewsOnSheetWithTemplate" : NumberInt(625), 
        "schedulesOnSheet" : NumberInt(371), 
        "unclippedViews" : NumberInt(876), 
        "createdOn" : ISODate("2017-10-13T19:11:47.530+0000"), 
        "_id" : ObjectId("59e10ff3eb0de5740c248df2")
    }
]

}

С помощью этого метода я могу видеть данные, но я хотел бы иметь

with open('file.json', 'r') as viewsmc:
    data = viewsmc.readlines()

С этим выход

['{ \n',
 '    "_id" : ObjectId("5af1b1fd4f4733eacf11dba9"), \n',
 '    "centralPath" : "XXX2", \n',
 '    "viewStats" : [\n',
 '        {\n',
 '            "totalViews" : NumberInt(3642), \n',
 '            "totalSheets" : NumberInt(393), \n',
 '            "totalSchedules" : NumberInt(427), \n',
 '            "viewsOnSheet" : NumberInt(1949), \n',
 '            "viewsOnSheetWithTemplate" : NumberInt(625), \n',
 '            "schedulesOnSheet" : NumberInt(371), \n',
 '            "unclippedViews" : NumberInt(876), \n',
 '            "createdOn" : ISODate("2017-10-13T18:06:45.291+0000"), \n',
 '            "_id" : ObjectId("59e100b535eeefcc27ee0802")\n',
 '        }, \n',

Я испробовал все разные методы и решения, о которых сообщалось в read_json / https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_json.html и загрузить / загрузить (str) и т. д. но ничего.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Проблема была связана с форматом файла JSON, мы протестировали с https://jsonformatter.curiousconcept.com/ и изменили с помощью регулярного выражения. Если у вас есть предложения лучше, дайте мне знать.

import re

with open("views3.json", "r+") as read_file:
   data = read_file.read()
   x = re.sub("\w+\((.+)\)", r'\1', data)
   print(x)

read_file.closed

0 голосов
/ 06 марта 2019

Вы хотите это ?: используйте модуль json для чтения file.json

import pandas as pd
import json

with open('file.json') as viewsmc:
   data = json.load(viewsmc)
print data #you have a dict

df = pd.DataFrame(data)
print(df)
...