Kurs
In der Welt der Datenmanipulation mit pandas ist die .explode()-Methode ein äußerst nützliches Werkzeug, sobald du mit Listen in DataFrames arbeitest. Dieses Tutorial ist dein Handbuch, um .explode() von den Grundlagen über fortgeschrittene Anwendungen bis hin zu häufigen Stolpersteinen wirklich zu beherrschen.
Die Kurzfassung: So funktioniert .explode()
Wenn du nur eine schnelle Antwort willst, lies einfach diesen Abschnitt. Die .explode()-Methode erweitert Einträge in einer listenartigen Spalte auf mehrere Zeilen, sodass jedes Listenelement eine eigene Zeile erhält. Zur Veranschaulichung nutzen wir folgendes DataFrame df:
|
ID |
Interessen |
|
1 |
['Python', 'Data Science'] |
|
2 |
['Machine Learning', 'AI'] |
Die .explode()-Methode erweitert die Elemente der Spalte Interessen wie folgt:
# Spalte "Interests" explodieren
exploded_df = df.explode('Interests')
|
ID |
Interessen |
|
1 |
Python |
|
1 |
Data Science |
|
2 |
Machine Learning |
|
2 |
AI |
Was ist die Pandas-.explode()-Methode?
Die .explode()-Methode vereinfacht die Arbeit mit verschachtelten Daten wie Listen oder Tupeln in pandas-DataFrames. Indem sie jedes Element einer listenartigen Struktur in eine eigene Zeile umwandelt, macht .explode() Daten zugänglicher und bereit für die Analyse.
Wie funktioniert die .explode()-Methode?
Die Funktionalität von .explode() ist zugleich leistungsfähig und unkompliziert – mit Fokus auf Benutzerfreundlichkeit und Effizienz bei Datenmanipulationsaufgaben.
column: Gibt die Spalte mit listenartigen Einträgen an, die explodiert werden soll.ignore_index: WennTrue, setzt die Methode den Index auf einen fortlaufenden Ganzzahlindex zurück, was hilft, die DataFrame-Integrität nach dem Explodieren zu wahren. Standard istFalse.
Zwei Wege, die Pandas-.explode()-Methode zu nutzen
Einzelne Spalten in Pandas explodieren
Der häufigste Anwendungsfall ist das Explodieren einer einzelnen Spalte. So werden listenartige Einträge in einzelne Zeilen aufgeteilt. Genau das haben wir in der Kurzfassung gezeigt. Schauen wir uns das Beispiel noch einmal an. Hier ist das DataFrame df mit den IDs von Personen und ihren Lerninteressen. Wie du siehst, sind die Lerninteressen als Listen formatiert.
|
ID |
Interessen |
|
1 |
['Python', 'Data Science'] |
|
2 |
['Machine Learning', 'AI'] |
Die .explode()-Methode erweitert die Elemente der Spalte Interessen in einzelne Zeilen wie folgt:
# Spalte "Interests" explodieren
exploded_df = df.explode('Interests')
|
ID |
Interessen |
|
1 |
Python |
|
1 |
Data Science |
|
2 |
Machine Learning |
|
2 |
AI |
Diese Methode ist besonders hilfreich bei Spalten mit kategorialen Daten oder mehreren Attributen pro Beobachtung.
Mehrere Spalten in Pandas explodieren
Es gibt auch Fälle, in denen du mehrere Spalten in einem DataFrame explodieren musst. Das ist vor allem nützlich, wenn mehrere Spalten listenartige Strukturen enthalten, die gleichzeitig entpackt werden sollen. Fügen wir df eine zusätzliche Spalte Tools hinzu, um das zu zeigen:
|
ID |
Interessen |
Tools |
|
1 |
['Python', 'Data Science'] |
['Pandas', 'NumPy'] |
|
2 |
['Machine Learning', 'AI'] |
['Scikit-learn', 'TensorFlow'] |
Um mehrere Spalten zu explodieren, übergib einfach die entsprechenden Spalten in einer Liste:
# Spalten "Interests" & "Tools" explodieren
exploded_df = df.explode(['Interests', 'Tools'])
|
ID |
Interessen |
Tools |
|
1 |
Python |
Pandas |
|
1 |
Data Science |
NumPy |
|
2 |
Machine Learning |
Scikit-learn |
|
2 |
AI |
TensorFlow |
Das ist besonders praktisch, wenn du mit mehreren Spalten arbeitest, die Listen enthalten. Es gibt jedoch ein paar Fallstricke, auf die du bei .explode() achten solltest – die schauen wir uns im nächsten Abschnitt an.
Häufige Fehler bei Pandas-.explode() und wie du sie löst
Doppelte Spalten explodiert
Ein häufiger Fehler bei .explode() ist, versehentlich doppelte Spalten zu explodieren. Achte darauf, dass die Liste der Spalten, die du übergibst, eindeutig ist!
# Falsch: doppelte Spalten explodieren
df.explode(['Interests','Tools','Interests'])
# Richtig: eindeutige Spalten explodieren
df.explode(['Interests','Tools'])
Strings explodieren, die wie Listen aussehen
Oft enthalten Zeilen in DataFrames Strings, die wie Listen aussehen. Versuchst du, eine Spalte mit solchen Strings zu explodieren, z. B. "['Python', 'AI']", passiert nichts, da .explode() echte listenartige Objekte erwartet – keine Strings, die nur so aussehen. Hier ist ein Beispiel und die Lösung. Angenommen, df hätte folgende Werte:
|
ID |
Interessen |
|
1 |
"['Python', 'Data Science']" |
|
2 |
"['Machine Learning', 'AI']" |
Wie du siehst, enthält die Spalte Interessen Strings, die wie Listen aussehen. .explode() auf Interessen hätte hier keinen Effekt, da es sich jeweils um einen einzelnen String handelt. Lösung: Konvertiere die Werte von Interessen zunächst in echte Listen.
import ast
df['Interests'] = df['Interests'].apply(ast.literal_eval)
exploded_df = df.explode('Interests')
print(exploded_df) # Das funktioniert
Unterschiedliche Längen bei mehreren Spalten
Bei pandas-DataFrames stolperst du leicht über Zeilen, in denen listenartige Strukturen in den zu explodierenden Spalten unterschiedlich lang sind. Das führt nach .explode() auf mehreren Spalten zu Fehlzuordnungen oder unvollständigen Daten. Stell dir vor, df sähe so aus:
|
ID |
Interessen |
Tools |
|
1 |
['Python', 'Data Science'] |
['Pandas'] |
|
2 |
['Machine Learning'] |
['Scikit-learn', 'TensorFlow'] |
Hier haben Interessen und Tools unterschiedlich lange Listen. .explode() auf diesen Spalten führt so zu einem Fehler, denn die Listenlängen müssen übereinstimmen. Abhilfe: Listen mit None auf gleiche Länge auffüllen, zum Beispiel so:
# Funktion, um Listen auf gleiche Länge zu bringen
def pad_lists(row):
max_len = max(len(row['Interests']), len(row['Tools']))
row['Interests'] += [None] * (max_len - len(row['Interests']))
row['Tools'] += [None] * (max_len - len(row['Tools']))
return row
# Padding-Funktion auf jede Zeile anwenden
df = df.apply(pad_lists, axis=1)
# Jetzt beide Spalten sicher explodieren
df.explode(['Interests','Tools'])
|
ID |
Interessen |
Tools |
|
1 |
Python |
Pandas |
|
1 |
Data Science |
None |
|
2 |
Machine Learning |
Scikit-learn |
|
2 |
None |
TensorFlow |
Fazit
Kurz gesagt: Die .explode()-Methode ist ideal, um Elemente aus Listen als Zeilen in einem pandas-DataFrame zu entpacken. Für mehr pandas-Wissen schau dir diese Ressourcen an:
Adel ist Data Science Educator, Speaker und Evangelist bei DataCamp, wo er verschiedene Kurse und Live-Trainings zu Datenanalyse, maschinellem Lernen und Data Engineering veröffentlicht hat. Er setzt sich leidenschaftlich für die Verbreitung von Datenkenntnissen und Datenkompetenz in Organisationen und an der Schnittstelle zwischen Technologie und Gesellschaft ein. Er hat einen MSc in Data Science und Business Analytics. In seiner Freizeit ist er mit seinem Kater Louis unterwegs.

