¿Por qué pandas confunde el día y el mes? Fechas ambiguas e ISO 8601
El mismo texto puede ser dos fechas. Aprende a saber cuál es y a escribir fechas que nadie lee al revés.
Curso gratis. Tu Maestro, una IA, .
El mismo texto, dos fechas
En México escribimos el día primero: 05/02/2026 es el 5 de febrero. En Estados Unidos se escribe el mes primero, y el mismo texto es el 2 de mayo. El texto no dice cuál de las dos es; lo sabe quien lo escribió.
Un programa que recibe ese texto tiene que elegir. Si no le dices cómo leerlo, elige él. Predice qué elige pandas.
Tres programas cortos. Escribe qué crees que imprime cada uno y por qué, y después córrelo.
Tres programas cortos. Escribe qué crees que imprime cada uno y por qué, y después córrelo.
Dos fechas de febrero, sin formato
Ejemplo 1 de 3
import pandas as pd
fechas = pd.Series(["05/02/2026", "06/02/2026"])
print(pd.to_datetime(fechas))
Adivinar está bien: se guarda tal como la escribiste para compararla. Solo tú y tu Maestro ven tus predicciones.
Ejemplo 2 de 3, se abre cuando expliques este
Silencio o error
Los dos primeros programas muestran los dos finales posibles de una fecha ambigua:
- Silencio. Si todos los números caben en el formato que el programa eligió, convierte todo, mal, sin avisar. Un archivo de los primeros doce días de cada mes se convierte entero al revés.
- Error. Si aparece un número que no cabe, como un 13 donde el programa esperaba un mes, se detiene.
El silencio es el caso peligroso, porque nada te obliga a revisar. Pregúntale a tu Maestro si un archivo tuyo pudo convertirse al revés.
Cómo saber qué formato tiene tu columna
No adivines con una fila. Mira toda la columna y busca un número mayor que 12: un mes nunca pasa de 12, así que donde aparezca ese número está el día.
Revisa todos los valores de la columna
¿Dónde hay un número mayor que 12?
Camino 1 de 3: en el primer número
Día primero
formato dd/mm/aaaa
Sigue en: Escribe el formato explícito al convertir
Camino 2 de 3: en el segundo
Mes primero
formato mm/dd/aaaa
Sigue en: Escribe el formato explícito al convertir
Camino 3 de 3: en ninguno
No se puede saber
pregunta a quien exportó el archivo
Sigue en: Escribe el formato explícito al convertir
Escribe el formato explícito al convertir
Inténtalo
El código separa cada fecha de ventas_exportadas en sus tres números y cuenta cuántas filas tienen el primero mayor que 12. Agrega la cuenta del segundo número y decide el formato del archivo.
Una buena respuesta imprime dos cuentas: una mayor que cero y otra en cero. Con eso sabes qué número es el día.
Cuenta cuántas fechas de ventasexportadas tienen el primer número mayor que 12 y cuántas tienen el segundo mayor que 12. ¿Qué formato tiene el archivo?
Cuenta cuántas fechas de ventas_exportadas tienen el primer número mayor que 12 y cuántas tienen el segundo mayor que 12. ¿Qué formato tiene el archivo?
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: ventas-exportadas, 29 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 |
En el archivo de Café Altura, 13 de las 29 fechas tienen el primer número mayor que 12 y ninguna tiene el segundo. El primer número es el día: el archivo es dd/mm/aaaa, como esperabas de una caja en México. Ahora lo sabes por los datos, no por suposición.
ISO 8601: año, mes, día
La forma de escribir una fecha que nadie lee al revés es la de la norma ISO 8601: 2026-02-05. Año con cuatro dígitos, mes con dos, día con dos, separados por guiones. Tiene dos ventajas:
- Nadie la lee al revés: el año va primero y no hay convención que ponga el día en medio.
- Como texto se ordena bien, como viste en el tercer programa.
Python la usa cuando imprime una fecha: date.isoformat() devuelve YYYY-MM-DD. DuckDB muestra las fechas igual, y pandas las escribe así en un CSV. Cuando guardes o compartas fechas, guárdalas así. Si tu equipo usa otro formato y no sabes cómo convencerlos, platícalo con tu Maestro.