2017-05-05 6 views
0

Ich möchte Json-Datei mit Python Pandas lesen. Jede Zeile der Datei ist ein vollständiges Objekt in JSON.Wie JSON-Datei mit Python Pandas lesen?

Ich verwende unter Versionen -

Python: 2.7.6

Pandas: 1.19.1

json File-

{"id":"111","p_id":"55","name":"aaa","notes":"","childs":[]} 
{"id":"222","p_id":"56","name":"bbb","notes":"","childs":[]} 
{"id":"333","p_id":"75","name":"ccc","notes":"","childs":[]} 
{"id":"444","p_id":"76","name":"ddd","notes":"","childs":["abc","efg","pqr" 
,"rtu"]} 

Ich bin Verwenden Sie den folgenden Code zum Lesen der JSON-Datei:

df = pd.read_json("temp.txt", lines = True) 
print df 

Das Problem ist, in JSON-Datei "Childs" Schlüssel enthält ein Array von nicht bekannten Indizes und dazwischen ist "\ n" verfügbar. Wenn ich über Code laufen lasse, bekomme ich ValueError: Erwartetes Objekt oder Wert, aber wenn ich "\ n" entferne, das nach "pqr" verfügbar ist, erhält mein Code Arbeit.

Ich möchte die verfügbaren "\ n" nicht aus meinen Daten entfernen. Ich möchte das in meinem Code behandeln. Ich möchte Python Pandas nur anstelle von Python Json-Bibliotheken für den Umgang mit Daten in guter Weise verwenden.

Wie kann ich nur Python Pandas verwenden und diesen Dateityp behandeln?

+0

Lesen Sie die gesamte Datei als Zeichenfolge und teilen Sie sie durch neue Zeile, dann haben Sie 4 JSON-Zeichenfolgen, die Sie einfach analysieren können. –

+0

@Erik Šťastný- ok, aber wie kann ich diese Daten in Pandas Datenrahmen nach dem Spucken es durch neue Zeile pflegen? – kit

+0

machen alle Zeilen der JSON-Datei zu einem gültigen JSON, ist ein besserer Weg – pktangyue

Antwort

0

read_json() kann wegen der neuen Zeile nach "pqr" nicht funktionieren. Sie können entweder versuchen, diese Zeile zu reparieren oder versuchen, das Ganze in gültiges JSON zu formatieren. Ich mache das letzteres hier durch Kommas nach neuen Linien und rund um das Ganze mit Klammern Hinzufügen einen richtigen JSON-Array zu bilden:

with open('temp.txt') as f: 
    content = f.read() 

pd.read_json('[' + content.replace('}\n', '},') + ']') 
2

zuerst prüfen, ob es eine gültige JSON-Datei ist oder nicht mit JSON validator Website

sobald die Datei in gültigem jSON-Format ist, können Sie den Code unten verwenden Sie es als Datenrahmen

with open("training.json") as datafile: 
    data = json.load(datafile) 
dataframe = pd.DataFrame(data) 

hoffte, das hilft zu lesen.

Verwandte Themen