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
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 colonnaCOUNTRY
dovrebbe essere aggiunta acars
, 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()