Ajouter une colonne (2)
Utiliser iterrows() pour parcourir chaque observation d'un DataFrame Pandas est facile à comprendre, mais peu efficace. À chaque itération, vous créez une nouvelle Series de Pandas.
Si vous voulez ajouter une colonne à un DataFrame en appelant une fonction sur une autre colonne, la méthode iterrows() combinée à une boucle for n'est pas la meilleure approche. Préférez plutôt apply().
Comparez la version avec iterrows() et la version avec apply() pour obtenir le même résultat dans le DataFrame brics :
for lab, row in brics.iterrows() :
brics.loc[lab, "name_length"] = len(row["country"])
brics["name_length"] = brics["country"].apply(len)
On peut faire quelque chose de semblable pour appeler la méthode upper() sur chaque nom dans la colonne country. Toutefois, upper() est une méthode; il faut donc une approche légèrement différente :
Cette activité fait partie du cours
Python intermédiaire
Instructions de l’exercice
- Remplacez la boucle
forpar une instruction sur une ligne qui utilise.apply(str.upper). L'appel doit donner le même résultat : une colonneCOUNTRYdoit être ajoutée àcars, contenant une version en majuscules des noms de pays. - Comme d'habitude, affichez
carspour voir le fruit de votre travail acharné
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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()