Skip to content

PySpark: DataFrame oder Spalte in Python-Liste umwandeln (Einsteigerfreundlicher Guide)

Updated on

Bei der Arbeit mit PySpark muss man häufig verteilte Spark DataFrames in native Python-Objekte umwandeln.
Ein häufiges Bedürfnis – besonders beim Debuggen, Exportieren oder bei Transformationen – ist es, ein PySpark DataFrame in eine Python-Liste zu konvertieren.

Auch wenn PySpark keine eingebaute .tolist()-Methode wie Pandas bietet, gibt es mehrere zuverlässige Wege, dasselbe Ergebnis zu erreichen – je nach Datensatzgröße und Speicherbeschränkungen.
Dieser aktualisierte Guide behandelt:

  • Was „tolist“ in PySpark bedeutet
  • Die besten Techniken, um Spark DataFrames → Python-Listen zu konvertieren
  • Umgang mit einzelnen und mehreren Spalten
  • Performance-Aspekte
  • Codebeispiele für kleine und große Datensätze

Suchst du einen AI-Agenten, der deine PySpark-, Pandas- und Jupyter-Workflows wirklich versteht?

RunCell ist ein JupyterLab AI-Agent, der deinen Code lesen, DataFrames analysieren, Notebook-Kontext verstehen, Fehler debuggen und sogar Code für dich generieren & ausführen kann.
Er läuft direkt in JupyterLab – kein Fensterwechsel, kein Copy & Paste.

👉 Probiere RunCell aus: https://www.runcell.dev (opens in a new tab)


Was bedeutet "tolist()" in PySpark?

Im Gegensatz zu Pandas haben PySpark DataFrames keine native .tolist()-Methode.

Wenn PySpark-Anwender von „tolist“ sprechen, meinen sie typischerweise:

✔ Option A — Das gesamte DataFrame in eine Python-Liste umwandeln

df.collect()

✔ Option B — DataFrame in Pandas umwandeln und dann in eine Liste

df.toPandas().values.tolist()

✔ Option C — Eine einzelne Spalte in eine Python-Liste umwandeln

df.select("col").rdd.flatMap(lambda x: x).collect()

Dieser Guide führt dich Schritt für Schritt durch alle diese Methoden mit klaren Beispielen.


Methode 1: PySpark DataFrame in eine Python-Liste konvertieren (kleine Daten)

Das ist das gängigste Muster, sollte aber nur verwendet werden, wenn der Datensatz in den Speicher passt.

df.toPandas().values.tolist()

Beispiel

from pyspark.sql import SparkSession
 
spark = SparkSession.builder.appName("PySparkTutorial").getOrCreate()
 
data = [('Alice', 1), ('Bob', 2), ('Charlie', 3), ('David', 4)]
df = spark.createDataFrame(data, ['Name', 'Age'])
 
df.toPandas().values.tolist()

Ausgabe

[['Alice', 1], ['Bob', 2], ['Charlie', 3], ['David', 4]]

Methode 2: Spark DataFrame ohne Pandas in Liste umwandeln (empfohlen für große Daten)

Wenn dein Datensatz groß ist, solltest du toPandas() unbedingt vermeiden.
Nutze stattdessen die verteilte API von Spark:

df.collect()

Das liefert:

[Row(Name='Alice', Age=1), Row(Name='Bob', Age=2), ...]

Um die Zeilen in „plain“ Python-Listen umzuwandeln:

[x.asDict().values() for x in df.collect()]

Oder jede Zeile in ein Dict konvertieren:

[row.asDict() for row in df.collect()]

Methode 3: Eine einzelne Spalte in eine Python-Liste umwandeln

Ein sehr häufiger Anwendungsfall.

Option A: Mit RDD (schnell & skalierbar)

df.select("Name").rdd.flatMap(lambda x: x).collect()

Option B: Mit Pandas (kleine Daten)

df.toPandas()["Name"].tolist()

Methode 4: DataFrame mit Index in eine Python-Liste umwandeln

PySpark DataFrames haben keinen eingebauten Index, aber du kannst einen manuell hinzufügen:

from pyspark.sql.functions import row_number
from pyspark.sql.window import Window
 
df_index = df.withColumn(
    "index", row_number().over(Window.orderBy("Name"))
)
df_index.show()

In eine Liste von Dictionaries umwandeln:

df_index.toPandas().to_dict("records")

Ausgabe

[
 {'Name': 'Alice', 'Age': 1, 'index': 1},
 {'Name': 'Bob', 'Age': 2, 'index': 2},
 {'Name': 'Charlie', 'Age': 3, 'index': 3},
 {'Name': 'David', 'Age': 4, 'index': 4}
]

Performance-Hinweise (unbedingt lesen)

🚫 Vermeide df.toPandas(), wenn:

  • der Datensatz groß ist
  • der Speicher im Cluster begrenzt ist
  • Spalten große Binary-/Textobjekte enthalten

✔ Nutze collect() oder RDD-Operationen, wenn:

  • du mit mittelgroßen bis großen Daten arbeitest
  • du nur bestimmte Spalten benötigst
  • du Speicherüberlastung auf dem Driver vermeiden willst

✔ Wandle nur um, was du wirklich brauchst

Anstatt:

df.toPandas()

lieber:

df.select("col_of_interest")

Fazit

PySpark bietet keine native .tolist()-Funktion, aber die Umwandlung eines DataFrames in eine Python-Liste ist sehr einfach mit:

  • toPandas().values.tolist() – für kleine Datensätze
  • collect() oder rdd-Operationen – für skalierbare Workloads
  • to_dict("records") – für JSON-freundliche Ausgaben

Wähle die Methode, die am besten zu deiner Datengröße und deinem Workflow passt.


Referenzen


Häufig gestellte Fragen

1. Wie wandle ich ein PySpark DataFrame in eine Python-Liste um?

Nutze df.collect() oder df.toPandas().values.tolist(), je nach Datensatzgröße.

2. Wie wandle ich eine einzelne Spalte in eine Liste um?

df.select("col").rdd.flatMap(lambda x: x).collect()

3. Wie wandle ich eine Spark-Row in ein Dict um?

row.asDict()

Verwandte PySpark-Guides