with read_json read query from for python json python-2.7 pandas

read_json - python pandas json read



Cargando un archivo con más de una línea de JSON en Pandas (4)

Estoy tratando de leer en un archivo JSON en el marco de datos de pandas Python (0.14.0). Aquí está la primera línea del archivo JSON:

{"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "P_Mk0ygOilLJo4_WEvabAA", "review_id": "OeT5kgUOe3vcN7H6ImVmZQ", "stars": 3, "date": "2005-08-26", "text": "This is a pretty typical cafe. The sandwiches and wraps are good but a little overpriced and the food items are the same. The chicken caesar salad wrap is my favorite here but everything else is pretty much par for the course.", "type": "review", "business_id": "Jp9svt7sRT4zwdbzQ8KQmw"}

Estoy intentando hacer lo siguiente: df = pd.read_json(path) .

Recibo el siguiente error (con rastreo completo):

Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/d/anaconda/lib/python2.7/site-packages/pandas/io/json.py", line 198, in read_json date_unit).parse() File "/Users/d/anaconda/lib/python2.7/site-packages/pandas/io/json.py", line 266, in parse self._parse_no_numpy() File "/Users/d/anaconda/lib/python2.7/site-packages/pandas/io/json.py", line 483, in _parse_no_numpy loads(json, precise_float=self.precise_float), dtype=None) ValueError: Trailing data

¿Cuál es el error de Trailing data finales? ¿Cómo lo leo en un marco de datos?

Siguiendo algunas sugerencias, aquí hay algunas líneas del archivo .json:

{"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "P_Mk0ygOilLJo4_WEvabAA", "review_id": "OeT5kgUOe3vcN7H6ImVmZQ", "stars": 3, "date": "2005-08-26", "text": "This is a pretty typical cafe. The sandwiches and wraps are good but a little overpriced and the food items are the same. The chicken caesar salad wrap is my favorite here but everything else is pretty much par for the course.", "type": "review", "business_id": "Jp9svt7sRT4zwdbzQ8KQmw"} {"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "TNJRTBrl0yjtpAACr1Bthg", "review_id": "qq3zF2dDUh3EjMDuKBqhEA", "stars": 3, "date": "2005-11-23", "text": "I agree with other reviewers - this is a pretty typical financial district cafe. However, they have fantastic pies. I ordered three pies for an office event (apple, pumpkin cheesecake, and pecan) - all were delicious, particularly the cheesecake. The sucker weighed in about 4 pounds - no joke./n/nNo surprises on the cafe side - great pies and cakes from the catering business.", "type": "review", "business_id": "Jp9svt7sRT4zwdbzQ8KQmw"} {"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "H_mngeK3DmjlOu595zZMsA", "review_id": "i3eQTINJXe3WUmyIpvhE9w", "stars": 3, "date": "2005-11-23", "text": "Decent enough food, but very overpriced. Just a large soup is almost $5. Their specials are $6.50, and with an overpriced soda or juice, it''s approaching $10. A bit much for a cafe lunch!", "type": "review", "business_id": "Jp9svt7sRT4zwdbzQ8KQmw"}

Este archivo .json que estoy usando contiene un objeto JSON en cada línea según la especificación.

Probé el sitio web jsonlint.com como se sugirió y me da el siguiente error:

Parse error on line 14: ...t7sRT4zwdbzQ8KQmw"}{ "votes": { ----------------------^ Expecting ''EOF'', ''}'', '','', '']''


Desde la versión 0.19.0 de Pandas puede usar el parámetro de lines , así:

import pandas as pd data = pd.read_json(''/path/to/file.json'', lines=True)


El siguiente código me ayudó a cargar contenido JSON en un marco de datos:

import json import pandas as pd with open(''Appointment.json'', encoding="utf8") as f: data = f.readlines() data = [json.loads(line) for line in data] #convert string to dict format df = pd.read_json(data) # Load into dataframe


Tienes que leerlo línea por línea. Por ejemplo, puede usar el siguiente código proporcionado por ryptophan en reddit :

import pandas as pd # read the entire file into a python array with open(''your.json'', ''rb'') as f: data = f.readlines() # remove the trailing "/n" from each line data = map(lambda x: x.rstrip(), data) # each element of ''data'' is an individual JSON object. # i want to convert it into an *array* of JSON objects # which, in and of itself, is one large JSON object # basically... add square brackets to the beginning # and end, and have all the individual business JSON objects # separated by a comma data_json_str = "[" + '',''.join(data) + "]" # now, load it into pandas data_df = pd.read_json(data_json_str)


Tuve un problema similar.

Resulta que pd.read_json(myfile.json) buscará en la carpeta principal automáticamente, pero devuelve este error de ''datos finales'' si no está en la misma carpeta que el archivo.

Lo descubrí, porque cuando intenté hacerlo con open(''myfile.json'', ''r'') , y obtuve un error FileNotFound , así que verifiqué las rutas.

No pude mover myfile.json a la misma carpeta que mi cuaderno.

pd.read_json(''../myfile.json'') a pd.read_json(''../myfile.json'') simplemente funcionó.