Heim >Backend-Entwicklung >Python-Tutorial >Wie entschachtele ich eine Pandas-DataFrame-Spalte (oder mehrere Spalten) in mehrere Zeilen?
So entschachteln Sie eine Spalte in einem Pandas-DataFrame in mehrere Zeilen
Eine der Herausforderungen bei der Datenmanipulation mit Pandas ist der Umgang mit Spalten, die Folgendes enthalten Listen. Wenn diese Listenspalten in separate Zeilen aufgeteilt werden müssen, wird der Vorgang als „Aufheben der Verschachtelung“ oder „Auflösen“ bezeichnet.
Pandas-Aufhebungsmethoden
Methode 1: pandas.DataFrame.explode
Für einen DataFrame mit einer einzelnen Spalte Nicht verschachtelt kann die Funktion pandas.DataFrame.explode verwendet werden. Der Spaltenname wird als Argument verwendet.
df.explode('B') # dataframe with column 'B' containing lists
Methode 2: Verwendung von Repeat und DataFrame-Konstruktor
Diese Methode kombiniert Repeat und den DataFrame-Konstruktor. Es wiederholt die Werte in der Spalte basierend auf der Länge der Listen und verkettet sie dann.
df = pd.DataFrame({'A': df.A.repeat(df.B.str.len()), 'B': np.concatenate(df.B.values)})
Methode 3: Liste neu erstellen
Neu erstellen list beinhaltet das Konvertieren der alten Spalte in eine Liste von Tupeln, die den Wert der Spalte und jedes Element der enthält Liste.
pd.DataFrame([[x] + [z] for x, y in df.values for z in y], columns=df.columns)
Methode 4: Reindex verwenden
Reindex erstellt einen neuen DataFrame mit wiederholten Indizes für die Elemente in der Liste. Der Spalte werden dann die verketteten Elemente zugewiesen.
df.reindex(df.index.repeat(df.B.str.len())).assign(B=np.concatenate(df.B.values))
Verallgemeinerung auf mehrere Spalten
Um die Verschachtelung mehrerer Spalten aufzuheben, kann eine benutzerdefinierte Funktion definiert werden. Zum Explodieren sind der DataFrame und eine Liste von Spaltennamen erforderlich.
def unnesting(df, explode): idx = df.index.repeat(df[explode[0]].str.len()) df1 = pd.concat([ pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1) df1.index = idx return df1.join(df.drop(explode, 1), how='left')
Horizontales Aufheben der Verschachtelung
Um die Verschachtelung horizontal aufzuheben, kann die Methode add_prefix verwendet werden, um eine Reihe zu erstellen neuer Spalten.
df.join(pd.DataFrame(df.B.tolist(), index=df.index).add_prefix('B_'))
Das obige ist der detaillierte Inhalt vonWie entschachtele ich eine Pandas-DataFrame-Spalte (oder mehrere Spalten) in mehrere Zeilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!