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
Oefeninstructies
- Vervang de
for-lus door een one-liner die.apply(str.upper)gebruikt. De aanroep moet hetzelfde resultaat geven: er moet een kolomCOUNTRYaancarsworden toegevoegd met de landnamen in hoofdletters. - Print, zoals gebruikelijk,
carsom 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()