Kom igångKom igång gratis

En riskfylld join

I den här övningen ska vi joina på latitud och longitud för att hämta in en annan datamängd som mäter hur gångvänlig ett område är. Vi behöver se till att kolumnerna vi joinar på har samma datatyp och samma precision (antal decimaler), annars kommer joinen inte att fungera!

Nedan ser du att df['latitude'] och df['longitude'] har högre precision än walk_df['longitude'] och walk_df['latitude']. Vi behöver avrunda dem till samma precision för att joinen ska fungera korrekt.

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

Feature Engineering med PySpark

Visa kurs

Övningsinstruktioner

  • Konvertera walk_df['latitude'] och walk_df['longitude'] till typen double med cast('double') på kolumnen och ersätt kolumnen på plats med withColumn().
  • Avrunda kolumnerna på plats med withColumn() och round('latitude', 5) respektive round('longitude', 5).
  • Skapa joinvillkoret så att walk_df['latitude'] matchar df['latitude'] och walk_df['longitude'] matchar df['longitude'].
  • Joina df och walk_df med join(), använd villkoret ovan och jointypen left. Spara den joinade dataramen som join_df.

Interaktiv övning med praktiskt arbete

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

# Cast data types
walk_df = ____.withColumn('longitude', ____.cast('double'))
walk_df = ____.withColumn(____, ____.cast('double'))

# Round precision
df = df.withColumn('longitude', round(____, 5))
df = df.withColumn(____, round(____, 5))

# Create join condition
condition = [____ == ____, ____ == ____]

# Join the dataframes together
join_df = ____.join(____, on=____, how=____)
# Count non-null records from new field
print(join_df.where(~join_df['walkscore'].isNull()).count())
Redigera och kör kod