Skip to content
Empieza gratis

¿Cómo convierto texto en fechas en pandas y DuckDB?

Dile a pandas y a DuckDB cómo leer tus fechas, y decide qué hacer con las que no se pueden leer.

Curso gratis. Tu Maestro, una IA, .

El formato es una instrucción

Ya sabes que ventas_exportadas tiene el día primero. Ahora díselo al programa. Un formato describe el texto pieza por pieza con códigos que empiezan con %:

CódigoQué leeEjemplo
%ddía del mes, con dos dígitos05
%mmes, con dos dígitos02
%Yaño, con cuatro dígitos2026
%Hhora de 00 a 2320
%Mminuto44
%Ssegundo40

Lo que no es código se copia tal cual. 05/02/2026 se describe como %d/%m/%Y: día, una diagonal, mes, una diagonal, año. pandas y DuckDB usan los mismos códigos para estas piezas.

pd.to_datetime recibe el formato en format:

Python
data["fecha"] = pd.to_datetime(data["fecha"], format="%d/%m/%Y")

La columna pasa de str a datetime64.

strptime recibe el texto y el formato, y devuelve un TIMESTAMP. Como aquí no hay hora, conviértelo en DATE con ::DATE:

SQL
SELECT strptime(fecha, '%d/%m/%Y')::DATE AS fecha
FROM ventas_exportadas;

Limpiar la columna fecha de ventas_exportadas

Ejemplo resuelto · 5 pasos

Convierte la columna fecha de texto a fecha y comprueba que la conversión quedó bien.

Piensa el siguiente paso por tu cuenta y luego ábrelo para comparar.

Lo que no cabe en el formato

Un archivo real casi siempre trae algún valor que no cabe: un día que no existe, una fecha escrita de otra forma, una celda vacía. Con un formato explícito, pandas se detiene en el primero con un ValueError. A veces quieres eso. Otras veces prefieres convertir lo que se pueda y revisar el resto aparte. Predice qué hace errors="coerce".

Cinco textos y un formato explícito. Escribe qué crees que imprime y por qué.

Cinco textos y un formato explícito. Escribe qué crees que imprime y por qué.

Cinco valores, uno de cada tipo

coerce.py
import pandas as pd

fechas = pd.Series(["28/02/2026", "31/02/2026", "1/3/2026", "2026-03-05", ""])
print(pd.to_datetime(fechas, format="%d/%m/%Y", errors="coerce"))

Adivinar está bien: se guarda tal como la escribiste para compararla. Solo tú y tu Maestro ven tus predicciones.

Haz tu predicción

El NaT no es un error que puedas ignorar: es una fila que perdió su fecha. Después de convertir con coerce, cuenta cuántos quedaron y míralos antes de seguir; una de esas filas te dice si es una celda vacía o un formato distinto que hay que convertir aparte. Si no sabes qué hacer con tus filas sin fecha, pregúntale a tu Maestro.

DuckDB tiene las dos opciones con dos funciones: strptime se detiene con un error en el primer valor que no cabe (con 31/02/2026 dice Date out of range), y try_strptime devuelve NULL en su lugar.

Cuidado: dayfirst no es un formato

pandas también acepta dayfirst=True. La documentación de pandas advierte que no es estricto: prefiere leer el día primero, pero no lo garantiza. Con un formato explícito no hay preferencia, hay una instrucción.

Inténtalo

Ahora con menos ayuda. La consulta suma las ventas por día, pero agrupa y ordena la columna de texto. Cámbiala para que convierta fecha con su formato, la llame dia y ordene por fecha real.

Una buena respuesta tiene 22 filas, una por cada día con ventas, de 2026-01-02 a 2026-03-28 en orden. Si ya convertiste la fecha y los días siguen en desorden, cuéntale a tu Maestro qué pusiste en GROUP BY y ORDER BY.

Suma el total de ventas por día, con la fecha convertida (llámala dia) y ordenada cronológicamente.

Tu turno

Suma el total de ventas por día, con la fecha convertida (llámala dia) y ordenada cronológicamente.

Tablas: ventas_exportadas (folio, fecha, sucursal, total)

ventas_exportadas · 29 filas

ColumnaTipo
folio Número de ticket del punto de venta.BIGINT
fecha La fecha tal como la exporta el punto de venta: texto en formato día/mes/año (dd/mm/aaaa).VARCHAR
sucursal Roma, Coyoacán o Del Valle.VARCHAR
total Total del ticket en pesos.BIGINT

Primeras filas

foliofechasucursaltotal
100102/01/2026Roma460
100205/01/2026Roma120
100305/01/2026Del Valle120

Cada ejecución empieza con copias nuevas de las tablas del curso, así que puedes probar lo que quieras.

Listo para ejecutar tu consulta.

Ejecútalo tú

Inténtalo sin ayuda

Ahora en pandas y desde cero: convierte la columna fecha de ventas_exportadas, imprime la fecha mínima y la máxima, y cuántas filas quedaron sin fecha. Una buena respuesta imprime el 2 de enero y el 28 de marzo de 2026, y 0 filas sin fecha.

Convierte la columna fecha con su formato explícito. Imprime la fecha mínima, la máxima y cuántas filas quedaron sin fecha.

Convierte la columna fecha con su formato explícito. Imprime la fecha mínima, la máxima y cuántas filas quedaron sin fecha.

Ejecuta tu código para ver lo que imprime y el valor de su última expresión. Cada ejecución empieza de nuevo.

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.

Los datos del ejercicio, "ventas-exportadas". Tus cambios corren con tu código.
FilaQuitar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Página 1 de 2

Ejecútalo tú

Piensa en un archivo con fechas que uses en tu trabajo. ¿En qué formato vienen, y cómo lo comprobarías con los datos antes de convertirlas?

Reflexiona: Piensa en un archivo con fechas que uses en tu trabajo. ¿En qué formato vienen, y cómo lo comprobarías con los datos antes de convertirlas?

Solo tú y tu Maestro leen esto. Se queda en tu cuenta y se borra con ella.