Añadir una columna (2)
Utilizar iterrows()
para iterar por cada observación de un DataFrame Pandas es fácil de entender, pero no muy eficiente. En cada iteración, creas una nueva serie de pandas.
Si quieres añadir una columna a un DataFrame mediante una llamada a una función de otra columna, el método iterrows()
en combinación con un bucle for
no es la mejor forma de hacerlo. En su lugar, deberás utilizar apply()
.
Compara la versión iterrows()
con la versión apply()
para obtener el mismo resultado en el DataFrame brics
:
for lab, row in brics.iterrows() :
brics.loc[lab, "name_length"] = len(row["country"])
brics["name_length"] = brics["country"].apply(len)
Podemos hacer algo similar para llamar al método upper()
en cada nombre de la columna country
. Sin embargo, upper()
es un método, por lo que necesitaremos un enfoque ligeramente distinto:
Este ejercicio forma parte del curso
Python intermedio
Instrucciones del ejercicio
- Sustituye el bucle
for
por una sola línea que utilice.apply(str.upper)
. La llamada debe dar el mismo resultado: debe añadirse una columnaCOUNTRY
acars
, que contenga una versión en mayúsculas de los nombres de los países. - Como siempre, imprime
cars
para ver los frutos de tu duro trabajo.
Ejercicio interactivo práctico
Prueba este ejercicio completando el código de muestra.
# 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()