> lección 21/34 · 16 min

apply: tu propia función sobre una columna

Concepto

Las operaciones de la lección anterior cubren cálculos y comparaciones simples. Cuando la regla tiene varios casos, como clasificar edades en tramos, escribes una función con if y le pides a pandas que la aplique a cada valor de la columna con apply.

Sintaxis
df["nueva"] = df["columna"].apply(nombre_funcion)

1. La función recibe un valor. Piensa en una sola celda: la función recibe un valor y devuelve el resultado para ese valor. Puedes probarla sola antes de usarla con la tabla.

def tramo_monto(monto):
    if monto >= 100000:
        return "alto"
    return "bajo"

tramo_monto(150000)   # "alto"

2. apply la usa en cada fila. apply llama a la función una vez por cada valor y devuelve una Series con los resultados. La función se pasa sin paréntesis: le entregas la función para que pandas la llame, no su resultado.

ventas["tramo"] = ventas["monto"].apply(tramo_monto)

Si escribes apply(tramo_monto()), Python intenta llamar la función en ese momento, sin el monto, y da un TypeError.

Cuándo no hace falta. Si la regla es una sola comparación o una operación aritmética, la forma directa de la lección anterior es más corta y más rápida. apply brilla cuando la regla tiene varios caminos.

> tarea Python

Con encuesta ya cargada, completa la función grupo_edad: debe devolver "joven" si la edad es menor que 30, "adulto" si es menor que 50, y "mayor" en otro caso. Aplícala a la columna edad para crear la columna grupo, y guarda en jovenes cuántas personas quedaron en el grupo joven.

Cargando Python… la primera vez puede tardar unos segundos.

Primero intenta: las pistas aparecen después de 2 intentos con un resultado incorrecto (los errores de código no cuentan). Llevas 0.

Aprueba las tareas de esta lección para ver el cierre.