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:
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
Ich habe versucht, json_normalize
like so
Aber es scheint einige Probleme mit keyerror
zu geben. Was ist der richtige Weg, dies zu tun?
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.
Fügen Sie abschließend DFs
für den gemeinsamen Index hinzu, um Folgendes zu erhalten:
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.