Wie man einen Pandas Datenrahmen mit einigen Spalten als json abflacht?

8

Ich habe einen Datenrahmen df , der Daten von einer Datenbank lädt. Die meisten Spalten sind JSON-Strings, während einige sogar eine Liste von Jsons sind. Zum Beispiel:

%Vor%

Wie Sie sehen können, haben nicht alle Zeilen die gleiche Anzahl von Elementen in den JSON-Strings für eine Spalte.

Was ich tun muss, ist, die normalen Spalten wie id und name so zu lassen, wie es ist, und die json-Spalten wie folgt abzuflachen

%Vor%

Ich habe versucht, json_normalize like so

zu verwenden %Vor%

Aber es scheint einige Probleme mit keyerror zu geben. Was ist der richtige Weg, dies zu tun?

    
sfactor 06.10.2016, 14:42
quelle

2 Antworten

10

Hier ist eine Lösung, die json_normalize() erneut verwendet Verwenden einer benutzerdefinierten Funktion zum Abrufen der Daten im richtigen Format, das von json_normalize function verstanden wird.

%Vor%

Fügen Sie abschließend DFs für den gemeinsamen Index hinzu, um Folgendes zu erhalten:

%Vor%

BEARBEITEN: - Laut dem Kommentar von @MartijnPieters würde die empfohlene Methode zur Dekodierung der JSON-Strings die Verwendung von json.loads() was im Vergleich zur Verwendung von ast.literal_eval() wenn Sie wissen, dass die Datenquelle JSON ist.

    
Nickil Maveli 06.10.2016, 21:57
quelle
4

Erstellen Sie eine benutzerdefinierte Funktion zum Reduzieren von columnB und verwenden Sie dann pd.concat

%Vor%

    
piRSquared 06.10.2016 15:21
quelle

Tags und Links