Lägg till kolumn (2)
Att använda iterrows() för att iterera över varje observation i en Pandas DataFrame är lätt att förstå, men inte särskilt effektivt. Vid varje iteration skapas nämligen en ny Pandas Series.
Om du vill lägga till en kolumn i en DataFrame genom att anropa en funktion på en annan kolumn, är iterrows() i kombination med en for-slinga inte det bästa tillvägagångssättet. Använd istället apply().
Jämför iterrows()-varianten med apply()-varianten för att få samma resultat i DataFramen brics:
for lab, row in brics.iterrows() :
brics.loc[lab, "name_length"] = len(row["country"])
brics["name_length"] = brics["country"].apply(len)
Vi kan göra något liknande för att anropa metoden upper() på varje namn i kolumnen country. Eftersom upper() är en metod behöver vi dock ett något annorlunda tillvägagångssätt:
Den här övningen är en del av kursen
Intermediate Python
Övningsinstruktioner
- Ersätt
for-slingan med en enda rad som använder.apply(str.upper). Anropet ska ge samma resultat: en kolumnCOUNTRYska läggas till icarsmed landsnamnen skrivna med versaler. - Skriv ut
carssom vanligt för att se resultatet av ditt arbete.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()