Ajouter une colonne (2)
L'utilisation de iterrows() pour itérer sur chaque observation d'un DataFrame Pandas est facile à comprendre, mais n'est pas très efficace. À chaque itération, vous créez une nouvelle série Pandas.
Si vous souhaitez 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 solution. Au lieu de cela, vous devez utiliser apply().
Comparez la version iterrows() avec la version 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)
Nous pouvons faire la même chose pour appeler la méthode upper() sur chaque nom de la colonne country. Cependant, upper() est une méthode, nous aurons donc besoin d'une approche légèrement différente :
Cet exercice fait partie du cours
Python intermédiaire
Instructions
- Remplacez la boucle
forpar une ligne qui utilise.apply(str.upper). L'appel devrait donner le même résultat : une colonneCOUNTRYdevrait être ajoutée àcars, contenant une version en majuscules des noms de pays. - Comme d'habitude, affichez le site
carspour voir le fruit de votre dur labeur.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()