¿Cómo usar drop() en pandas?
Respuesta corta: drop() elimina filas o columnas de un DataFrame por su etiqueta. Usa df.drop(columns="nombre") para quitar columnas y df.drop(index=[1, 3]) para quitar filas. Devuelve un DataFrame nuevo, así que guarda el resultado.
import pandas as pd
df = pd.DataFrame({
"nombre": ["Ana", "Luis", "Marta", "Pedro"],
"edad": [28, 34, 25, 41],
"ciudad": ["Madrid", "Lima", "Bogotá", "Quito"],
})
df = df.drop(columns="ciudad")
print(df) nombre edad
0 Ana 28
1 Luis 34
2 Marta 25
3 Pedro 41Si no guardas el resultado en una variable, df no cambia. Es el error más común con drop().
drop() busca por etiqueta: el nombre de la columna o el valor del índice de la fila.
Sintaxis de drop()
df.drop(
labels=None,
axis=0,
index=None,
columns=None,
level=None,
inplace=False,
errors="raise",
)| Parámetro | Qué hace |
|---|---|
columns | La columna o la lista de columnas que quieres quitar |
index | La fila o la lista de filas, por su etiqueta en el índice |
labels + axis | La forma antigua: axis=0 para filas y axis=1 para columnas |
level | El nivel del índice cuando es un MultiIndex |
inplace | True modifica df y devuelve None |
errors | "ignore" no da error si la etiqueta no existe |
df.drop(columns="edad") y df.drop("edad", axis=1) hacen lo mismo. La primera forma es más clara, porque no tienes que recordar qué es cada axis.
Ejemplos de drop() en pandas
Los ejemplos parten del DataFrame original de cuatro personas, con las columnas nombre, edad y ciudad.
Eliminar varias columnas
print(df.drop(columns=["edad", "ciudad"])) nombre
0 Ana
1 Luis
2 Marta
3 PedroEliminar filas por su índice
print(df.drop(index=[1, 3])) nombre edad ciudad
0 Ana 28 Madrid
2 Marta 25 BogotáFíjate en que el índice queda con huecos (0, 2). Si lo quieres seguido, añade .reset_index(drop=True).
Eliminar filas que cumplen una condición
drop() necesita etiquetas, así que primero obtienes el índice de las filas que quieres quitar:
jovenes = df[df["edad"] < 30].index
print(df.drop(jovenes)) nombre edad ciudad
1 Luis 34 Lima
3 Pedro 41 QuitoFiltrar las filas que quieres conservar da el mismo resultado y suele ser más legible: df[df["edad"] >= 30].
Eliminar filas por un valor del índice
personas = df.set_index("nombre")
print(personas.drop("Luis")) edad ciudad
nombre
Ana 28 Madrid
Marta 25 Bogotá
Pedro 41 QuitoEliminar la última fila o la primera columna
df.drop(df.index[-1]) # la última fila
df.drop(columns=df.columns[0]) # la primera columnaNo dar error si la columna no existe
df.drop(columns="pais", errors="ignore")Es útil en scripts que procesan archivos en los que esa columna a veces aparece y a veces no.
