Heim > Backend-Entwicklung > Python-Tutorial > Wie entschachtele ich eine Pandas-DataFrame-Spalte (oder mehrere Spalten) in mehrere Zeilen?

Wie entschachtele ich eine Pandas-DataFrame-Spalte (oder mehrere Spalten) in mehrere Zeilen?

DDD
Freigeben: 2024-12-29 00:39:11
Original
309 Leute haben es durchsucht

How to Unnest a Pandas DataFrame Column (or Multiple Columns) into Multiple Rows?

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
Nach dem Login kopieren

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)})
Nach dem Login kopieren

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)
Nach dem Login kopieren

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))
Nach dem Login kopieren

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')
Nach dem Login kopieren

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_'))
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage