Auswählen von II
Ähnlich wie in SQL kannst du auch die Methode .select()
verwenden, um spaltenweise Operationen durchzuführen. Wenn du eine Spalte mit der Notation df.colName
auswählst, kannst du eine beliebige Spaltenoperation durchführen und die Methode .select()
gibt die umgewandelte Spalte zurück. Ein Beispiel:
flights.select(flights.air_time/60)
gibt eine Spalte mit der Flugdauer in Stunden statt in Minuten zurück. Du kannst auch die Methode .alias()
verwenden, um eine Spalte umzubenennen, die du auswählst. Wenn du also mit .select()
die Spalte duration_hrs
(die sich nicht in deinem DataFrame befindet) auswählen möchtest, könntest du Folgendes tun
flights.select((flights.air_time/60).alias("duration_hrs"))
Die entsprechende Spark DataFrame-Methode .selectExpr()
nimmt SQL-Ausdrücke als String entgegen:
flights.selectExpr("air_time/60 as duration_hrs")
wobei das SQL-Schlüsselwort as
der Methode .alias()
entspricht. Um mehrere Spalten auszuwählen, kannst du mehrere Strings übergeben.
Erinnere dich daran, dass eine SparkSession
mit dem Namen spark
bereits in deinem Arbeitsbereich liegt, zusammen mit dem Spark DataFrame flights
.
Diese Übung ist Teil des Kurses
Einführung in PySpark
Anleitung zur Übung
Erstelle eine Tabelle mit der Durchschnittsgeschwindigkeit jedes Fluges in beiden Richtungen.
- Berechne die Durchschnittsgeschwindigkeit, indem du
distance
durchair_time
(umgerechnet in Stunden) teilst. Verwende die Methode.alias()
und nenne diese Spalte"avg_speed"
. Speichere die Ausgabe als Variableavg_speed
. - Wähle die Spalten
"origin", "dest", "tailnum"
undavg_speed
(ohne Anführungszeichen!). Speichere dies alsspeed1
. - Erstelle die gleiche Tabelle mit
.selectExpr()
und einem String, der einen SQL-Ausdruck enthält. Speichere dies alsspeed2
.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# Define avg_speed
avg_speed = (flights.____/(flights.____/60)).alias("____")
# Select the correct columns
speed1 = flights.select("origin", "dest", "tailnum", avg_speed)
# Create the same table using a SQL expression
speed2 = flights.selectExpr("____", "____", "____", "distance/(air_time/60) as ____")