¿Por qué drop_duplicates() no quita mis repetidos? Define la llave primero
Predice qué quita drop_duplicates() con distintas columnas, separa tres tipos de repetido y elige la llave que dice cuándo dos renglones son la misma cosa.
Curso gratis. Tu Maestro, una IA, .
El inventario encontró 2 folios de más en la hoja de ventas. La reacción natural es correr drop_duplicates() y seguir. Antes de hacerlo en la hoja completa, mira lo que hace en una tabla de seis renglones. Tiene tres situaciones distintas mezcladas, como pasa en las hojas reales:
- La venta V-1 se capturó dos veces, igual (capturas 1 y 5).
- Hotel Mirador hizo dos pedidos idénticos el mismo día, con folios distintos (V-2 y V-3). Son dos ventas.
- La venta V-4 se capturó con 5 kilos y después se corrigió a 50 (capturas 4 y 6).
La columna captura es el número de renglón en que se capturó cada venta: va subiendo conforme alguien escribe en la hoja. Predice cada resultado antes de correrlo.
Sin decir qué columnas
Ejemplo 1 de 4
import pandas as pd
ventas = pd.DataFrame({
"captura": [1, 2, 3, 4, 5, 6],
"folio": ["V-1", "V-2", "V-3", "V-4", "V-1", "V-4"],
"cliente": ["Café La Esquina", "Hotel Mirador", "Hotel Mirador",
"Grano Fino", "Café La Esquina", "Grano Fino"],
"fecha": ["2026-03-02", "2026-03-02", "2026-03-02",
"2026-03-05", "2026-03-02", "2026-03-05"],
"kilos": [40, 163, 163, 5, 40, 50],
})
print(len(ventas.drop_duplicates()))
Adivinar está bien: se guarda tal como la escribiste para compararla. Solo tú y tu Maestro ven tus predicciones.
Ejemplo 2 de 4, se abre cuando expliques este
Tres cosas que se ven repetidas
Lo que la tabla te enseñó es que "duplicado" no es una sola cosa. Hay tres casos, y cada uno pide algo distinto:
- La misma cosa capturada dos veces, igual. La V-1. Sobra una copia, y no importa cuál.
- La misma cosa capturada dos veces, distinta. La V-4: una captura y su corrección. Sobra una copia, y sí importa cuál (la página siguiente).
- Dos cosas distintas que se parecen. La V-2 y la V-3. No sobra nada. Quitar una es borrar una venta real.
Ningún comando distingue estos casos por ti. Lo que los distingue es la llave: la columna o columnas que dicen cuándo dos renglones son la misma cosa. En la hoja de ventas, la llave es el folio, porque cada venta tiene uno y la cooperativa nunca lo repite. Dos renglones con el mismo folio son la misma venta; dos con folios distintos son dos ventas, aunque se parezcan en todo lo demás.
Elegir la llave es preguntarte qué representa un renglón, lo que se llama la Término del glosario de la tabla. En la hoja de ventas, un renglón es una venta. En el padrón, un renglón es un socio. Si no puedes decir en una frase qué representa un renglón, todavía no puedes quitar duplicados.
¿No sabes cuál sería la llave de una tabla de tu trabajo? Cuéntale a tu Maestro qué representa cada renglón.
En la hoja de marzo completa, los mismos comandos dan: drop_duplicates() deja las 60 ventas; sin la captura, 59 (se va la segunda copia exacta de V-0017); con el folio, 58. Y con cliente, fecha y kilos también salen 58, pero borrando la V-0041, el segundo pedido real de Hotel Mirador, y dejando dos veces la V-0031. Mismo número, tabla equivocada. Por eso no basta con ver cuántos renglones quedan: hay que ver cuáles.
Inténtalo
En el padrón de socios no hay folio. Hay un socio_id, pero a una socia la registraron dos veces con dos ids distintos, así que el id no te sirve para encontrarla. Busca repetidos por nombre y después por nombre y municipio. Si no ves por qué los dos resultados son distintos, pregúntale a tu Maestro.
Primero normaliza municipio (ya tienes el mapa). Después imprime los socios que se repiten por nombre y los que se repiten por nombre y municipio, con duplicated(..., keep=False) para ver todas las copias. Terminaste cuando puedes decir cuál de los dos grupos es la misma persona
Primero normaliza municipio (ya tienes el mapa). Después imprime los socios que se repiten por nombre y los que se repiten por nombre y municipio, con duplicated(..., keep=False) para ver todas las copias. Terminaste cuando puedes decir cuál de los dos grupos es la misma persona y cuál son dos personas distintas.
Ejecuta tu código para ver lo que imprime y el valor de su última expresión. Cada ejecución empieza de nuevo. Ctrl+Enter ejecuta tu código. Tab agrega sangría; para salir del editor, presiona Escape y luego Tab.
Listo para ejecutar tu código.
Ejecuta tu código para ver su salida aquí.
Datos: socios-cooperativa, 30 filas
Enter guarda una celda y Escape la deja como estaba. Deja una celda vacía para un valor faltante.
| Fila | Quitar | ||||||
|---|---|---|---|---|---|---|---|
| 1 | |||||||
| 2 | |||||||
| 3 | |||||||
| 4 | |||||||
| 5 | |||||||
| 6 | |||||||
| 7 | |||||||
| 8 | |||||||
| 9 | |||||||
| 10 | |||||||
| 11 | |||||||
| 12 | |||||||
| 13 | |||||||
| 14 | |||||||
| 15 | |||||||
| 16 | |||||||
| 17 | |||||||
| 18 | |||||||
| 19 | |||||||
| 20 |
Por nombre salen 4 renglones: Juana Martínez Cruz dos veces y José Luis Pérez Santiago dos veces. Por nombre y municipio sale solo Juana. José Luis Pérez Santiago de San Agustín Loxicha y José Luis Pérez Santiago de Candelaria Loxicha son dos productores distintos, con parcelas y teléfonos distintos: dos personas pueden llamarse igual. Con el nombre como llave, habrías borrado a uno de ellos del padrón.
Y fíjate en el orden: si no normalizas el municipio primero, Juana tampoco sale, porque una copia dice "Pluma Hidalgo" y la otra "pluma hidalgo". Limpiar el texto va antes de buscar duplicados. Aun así, que salga Juana es una sospecha, no una prueba: lo confirma Marisol, y eso es la página siguiente.