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
for
par une ligne qui utilise.apply(str.upper)
. L'appel devrait donner le même résultat : une colonneCOUNTRY
devrait être ajoutée àcars
, contenant une version en majuscules des noms de pays. - Comme d'habitude, affichez le site
cars
pour 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()