Lass mehrere Säulen in Pandas explodieren

Olorunfemi Akinlua 21 Juni 2023
  1. Verwenden Sie die explode()-Funktion, um mehrere Säulen in Pandas zum Explodieren zu bringen
  2. Verwenden Sie Series.explode, um mehrere Säulen in Pandas explodieren zu lassen
Lass mehrere Säulen in Pandas explodieren

Die Daten, auf die wir Zugriff haben, können verschiedene Datentypen enthalten, von Strings bis hin zu Arrays oder Listen. Normalerweise bevorzugen wir Zahlen (Integer und Floats) und Strings, da diese einfacher zu manipulieren sind.

Wenn wir eine Liste in unseren Datenrahmenzellen haben, wie arbeiten wir mit ihnen? Wir können die Funktion explode() mit der Pandas-Bibliothek verwenden, die in diesem Thema erklärt wird.

Verwenden Sie die explode()-Funktion, um mehrere Säulen in Pandas zum Explodieren zu bringen

Mit der explode() Funktion werden Dataframe-Zellen mit Listenelementen in Zeilen umgewandelt, während die Indexwerte repliziert werden und ein Dataframe mit den explodierten Listen zurückgegeben wird. Bevor wir die Funktion explode() verwenden, erstellen wir einen Dataframe mit Listenelementen.

Codebeispiel:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "A": ["1", "2", "3", "4"],
        "B": [["11", "12"], ["13", "14"], ["15", "16"], ["17", "18"]],
        "C": [["31", "32"], ["33", "43"], ["56", "67"], ["78", "87"]],
        "D": [["41", "42"], ["34", "47"], ["55", "66"], ["77", "88"]],
        "E": [["51", "52"], ["35", "45"], ["56", "76"], ["97", "68"]],
    }
)

print(df)

Ausgang:

    A         B         C         D         E
0  1  [11, 12]  [31, 32]  [41, 42]  [51, 52]
1  2  [13, 14]  [33, 43]  [34, 47]  [35, 45]
2  3  [15, 16]  [56, 67]  [55, 66]  [56, 76]
3  4  [17, 18]  [78, 87]  [77, 88]  [97, 68]

Um den Datenrahmen zu explodieren, müssen wir die Säule passieren, die wir zum Explodieren benötigen. Wir können mehrere Spalten auflösen, aber beginnen wir mit einer Spalte – B.

print(df.explode("B"))

Ausgang:

    A   B         C         D         E
0  1  11  [31, 32]  [41, 42]  [51, 52]
0  1  12  [31, 32]  [41, 42]  [51, 52]
1  2  13  [33, 43]  [34, 47]  [35, 45]
1  2  14  [33, 43]  [34, 47]  [35, 45]
2  3  15  [56, 67]  [55, 66]  [56, 76]
2  3  16  [56, 67]  [55, 66]  [56, 76]
3  4  17  [78, 87]  [77, 88]  [97, 68]
3  4  18  [78, 87]  [77, 88]  [97, 68]

Wie Sie sehen können, repliziert es die Indizes und trennt die Listenelemente, damit sie ihre Zelle haben. Wenn wir die ursprünglichen Indizes nicht verwenden möchten, können wir sie durch neue Indizes ersetzen, indem wir den Parameter ignore_index verwenden.

Indem wir es auf True setzen, ersetzen wir die ursprünglichen Indizes durch neue.

    A   B         C         D         E
0  1  11  [31, 32]  [41, 42]  [51, 52]
1  1  12  [31, 32]  [41, 42]  [51, 52]
2  2  13  [33, 43]  [34, 47]  [35, 45]
3  2  14  [33, 43]  [34, 47]  [35, 45]
4  3  15  [56, 67]  [55, 66]  [56, 76]
5  3  16  [56, 67]  [55, 66]  [56, 76]
6  4  17  [78, 87]  [77, 88]  [97, 68]
7  4  18  [78, 87]  [77, 88]  [97, 68]

Wir können den Datenrahmen auch basierend auf mehreren Spalten auflösen.

print(df.explode(["B", "C", "D", "E"], ignore_index=True))

Ausgang:

    A   B   C   D   E
0  1  11  31  41  51
1  1  12  32  42  52
2  2  13  33  34  35
3  2  14  43  47  45
4  3  15  56  55  56
5  3  16  67  66  76
6  4  17  78  77  97
7  4  18  87  88  68

Verwenden Sie Series.explode, um mehrere Säulen in Pandas explodieren zu lassen

Die Funktion Series.explode macht das Gleiche wie die Funktion pandas explode(), und wir können die Funktion apply() neben der Funktion verwenden, um den gesamten Datenrahmen zu explodieren. Wir können den Index basierend auf einer Spalte setzen und die Funktion explode() anwenden und dann den Index mit der Funktion reset_index() zurücksetzen.

print(df.set_index(["A"]).apply(pd.Series.explode).reset_index())

Ausgang:

    A   B   C   D   E
0  1  11  31  41  51
1  1  12  32  42  52
2  2  13  33  34  35
3  2  14  43  47  45
4  3  15  56  55  56
5  3  16  67  66  76
6  4  17  78  77  97
7  4  18  87  88  68
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Verwandter Artikel - Pandas Column