Añadir columna (2)
Utilizar iterrows()
para iterar sobre cada observación de un DataFrame Pandas es fácil de entender, pero no muy eficiente. En cada iteración, estás creando una nueva Serie Pandas.
Si quieres añadir una columna a un Marco de datos llamando 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 de 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
Pruebe este ejercicio completando este 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()