IniziaInizia gratis

Aggiungi una colonna (2)

Utilizzare iterrows() per iterare su ogni osservazione di un DataFrame pandas è semplice, ma non molto efficiente. Ad ogni iterazione, creerai una nuova Series di pandas.

Se vuoi aggiungere una colonna a un DataFrame richiamando una funzione su un'altra colonna, il metodo iterrows() in combinazione con un ciclo for non è la soluzione migliore. Al contrario, dovrai utilizzare apply().

Confronta la versione iterrows() con la versione apply() per ottenere lo stesso risultato nel DataFrame brics:

for lab, row in brics.iterrows() :

    brics.loc[lab, "name_length"] = len(row["country"])




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

Possiamo fare qualcosa di simile per chiamare il metodoupper() su ogni nome della colonna country. Tuttavia, upper() è un metodo, quindi avremo bisogno di un approccio leggermente diverso:

Questo esercizio fa parte del corso

Python - Livello Intermedio

Visualizza il corso

Istruzioni dell'esercizio

  • Sostituisci il ciclo for con un one-liner (un’unica riga) che utilizza .apply(str.upper). La chiamata dovrebbe dare lo stesso risultato: una colonna COUNTRY dovrebbe essere aggiunta a cars, contenente una versione maiuscola dei nomi dei Paesi.
  • Come al solito, stampa cars per vedere i frutti del tuo duro lavoro.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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()
Modifica ed esegui il codice