Aufteilen einer Wörterbuchspalte in separate Spalten mit Pandas
Problemeinführung
Bei der Arbeit Bei Pandas DataFrames kommt es häufig vor, dass eine Spalte Wörterbücher als Werte enthält. Dies kann bei der weiteren Datenanalyse zu Herausforderungen führen, da die Wörterbücher zur besseren Zugänglichkeit und Handhabung in separate Spalten aufgeteilt werden müssen. Dieses Problem wird besonders relevant, wenn die Wörterbücher unterschiedliche Längen haben und gemeinsame Schlüssel enthalten.
Ursprünglicher Ansatz und Fehler
Der Benutzer im Forumbeitrag beschreibt einen DataFrame, bei dem „ Die Spalte „Schadstoffgehalt“ enthält Wörterbücher. Zunächst wurde versucht, diese Spalte mithilfe des folgenden Codes zu teilen:
objs = [df, pandas.DataFrame(df['Pollutant Levels'].tolist()).iloc[:, :3]] df2 = pandas.concat(objs, axis=1).drop('Pollutant Levels', axis=1)
Diese Methode führte jedoch zu einem IndexError aufgrund von Slicing außerhalb der Grenzen.
Unicode-Problem
Der Benutzer vermutet außerdem, dass es sich möglicherweise um das Unicode-Format der Wörterbücher in der Spalte „Schadstoffgehalt“ handelt das Problem verursacht. Sie haben die Form:
u{'a': '1', 'b': '2', 'c': '3'}
statt:
{u'a': '1', u'b': '2', u'c': '3'}
Lösung
Um diese Probleme anzugehen, wird der folgende Ansatz empfohlen :
import pandas as pd df['Pollutant Levels'] = df['Pollutant Levels'].apply(lambda x: dict(x)) df2 = pd.json_normalize(df['Pollutant Levels'])
Erklärung
Die Die erste Codezeile konvertiert die Unicode-Wörterbücher in Standardwörterbücher. Die zweite Zeile nutzt die Funktion json_normalize von Pandas, die eine bequeme Möglichkeit bietet, eine Spalte mit Wörterbüchern in separate Spalten umzuwandeln. Diese Funktion vermeidet die Notwendigkeit kostspieliger Anwendungsfunktionen und erzeugt den gewünschten DataFrame:
Station ID a b c 8809 46 3 12 8810 36 5 8 8811 NaN 2 7 8812 NaN NaN 11 8813 82 NaN 15
Das obige ist der detaillierte Inhalt vonWie kann ich eine Pandas DataFrame-Spalte mit Wörterbüchern effizient in separate Spalten aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!