Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Ersätt for-slingan med en enda rad som använder .apply(str.upper). Anropet ska ge samma resultat: en kolumn COUNTRY ska läggas till i cars med landsnamnen skrivna med versaler.
  • Skriv ut cars som 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()
Redigera och kör kod