Kom igångKom igång gratis

Skapa kolumner

I det här kapitlet lär du dig använda metoderna som definieras av Sparks DataFrame-klass för att utföra vanliga dataoperationer.

Låt oss titta på kolumnvisa operationer. I Spark gör du detta med metoden .withColumn(), som tar två argument. Först en sträng med namnet på din nya kolumn, och sedan den nya kolumnen själv.

Den nya kolumnen måste vara ett objekt av klassen Column. Att skapa ett sådant är enkelt – du extraherar en kolumn från din DataFrame med df.colName.

Att uppdatera en Spark DataFrame skiljer sig lite från att arbeta med pandas, eftersom en Spark DataFrame är immutable (oföränderlig). Det innebär att den inte kan ändras direkt, och kolumner kan därför inte uppdateras på plats.

Alla dessa metoder returnerar alltså en ny DataFrame. För att skriva över den ursprungliga DataFrame:n måste du tilldela om den returnerade DataFrame:n med metoden på följande sätt:

df = df.withColumn("newCol", df.oldCol + 1)

Koden ovan skapar en DataFrame med samma kolumner som df plus en ny kolumn, newCol, där varje värde är lika med motsvarande värde i oldCol plus ett.

För att skriva över en befintlig kolumn anger du helt enkelt kolumnens namn som första argument!

Kom ihåg att en SparkSession med namnet spark redan finns i din arbetsmiljö.

Den här övningen är en del av kursen

Grunderna i PySpark

Visa kurs

Övningsinstruktioner

  • Använd metoden spark.table() med argumentet "flights" för att skapa en DataFrame med värdena från tabellen flights i .catalog. Spara den som flights.
  • Visa de första raderna i flights med flights.show(). Kontrollera utdata: kolumnen air_time innehåller flygtiden i minuter.
  • Uppdatera flights så att den inkluderar en ny kolumn kallad duration_hrs, som innehåller flygtiden för varje flyg i timmar (du behöver dividera air_time med antalet minuter per timme).

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# Create the DataFrame flights
flights = spark.table(____)

# Show the head
____.____()

# Add duration_hrs
flights = flights.withColumn(____)
Redigera och kör kod