Aan de slagGa gratis aan de slag

Kolom toevoegen (2)

iterrows() gebruiken om over elke observatie van een Pandas DataFrame te itereren is makkelijk te begrijpen, maar niet erg efficiënt. Bij elke iteratie maak je een nieuwe Pandas Series aan.

Als je een kolom aan een DataFrame wilt toevoegen door een functie aan te roepen op een andere kolom, is de methode iterrows() in combinatie met een for-lus niet de beste keuze. Gebruik in plaats daarvan apply().

Vergelijk de iterrows()-versie met de apply()-versie om hetzelfde resultaat te krijgen in het brics-DataFrame:

for lab, row in brics.iterrows() :
    brics.loc[lab, "name_length"] = len(row["country"])

brics["name_length"] = brics["country"].apply(len)

We kunnen iets soortgelijks doen om de methode upper() aan te roepen op elke naam in de kolom country. upper() is echter een methode, dus we hebben een iets andere aanpak nodig:

Deze oefening maakt deel uit van de cursus

Python voor gemiddeld niveau

Cursus bekijken

Oefeninstructies

  • Vervang de for-lus door een one-liner die .apply(str.upper) gebruikt. De aanroep moet hetzelfde resultaat geven: er moet een kolom COUNTRY aan cars worden toegevoegd met de landnamen in hoofdletters.
  • Print, zoals gebruikelijk, cars om de vruchten van je harde werk te zien

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)

# Use .apply(str.upper)
for lab, row in cars.iterrows() :
    cars.loc[lab, "COUNTRY"] = row["country"].upper()
Code bewerken en uitvoeren