Comparando objetos datetime – Python
Tengo un archivo de datos que se ve así:
Fecha artículo comprado
01-12-2018 Coche
02-12-2018 Camión
03-12-2018 Coche
04-12-2018 Bicicleta
Como parte del proceso de limpieza de datos, necesito comprobar que los datos estén en orden cronológico. Por lo tanto, necesito comprobar que la fecha en una fila sea posterior a la fecha en la fila anterior. Si no es así, necesito eliminar esa fila. Se me indica que no use la biblioteca de pandas.
Hasta ahora, he realizado los siguientes pasos:
Si el nombre del archivo es - 'Input_file'
from openpyxl import load_workbook
from datetime import datetime
Leyendo el archivo
wb = load_workbook(Input_file)
sheet = wb.active
Leyendo la columna de fecha en el archivo
Date_column = sheet['A']
Leyendo cada fila y la fecha en cada fila para compararla con la fecha de la fila anterior
for x in range(len(Date_column)):
Datenow = Date_column[x].value
Datebef= Date_column[x-1].value
Check = Datenow > Datebef
print(Check)
El error que obtengo cuando intento comparar los objetos de fecha y hora es:
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'
El problema es cuando compruebo el tipo de la columna de fecha, resulta ser datetime.datetime pero en cuanto intento comparar ambos objetos datetime.datetime, me indica que uno es de tipo cadena y el otro es un objeto datetime.datetime. La confusión es que si ambos valores se leen de la misma columna, ¿cómo uno es cadena y otro es objeto datetime.datetime?
¿Cómo puedo asegurarme de que los valores se mantengan como datetime.datetime y que pueda compararlos?
Gracias.
davy.ai
Para asegurarse de que los valores se mantengan como datetime.datetime y se puedan comparar, puede convertir los valores de fecha de cadena en la columna en objetos datetime utilizando la función datetime.strptime(). Aquí hay un fragmento de código actualizado que hace esto:
En este fragmento de código actualizado, se utiliza la función datetime.strptime() para convertir los valores de cadena de fecha en objetos datetime utilizando la cadena de formato ‘%d-%m-%Y’. Esta cadena de formato coincide con el formato de las fechas en el archivo de entrada.
Al convertir ambas fechas en objetos datetime, ahora se pueden comparar con el operador mayor que.