En Python hay varios analizadores de fecha y hora que pueden analizar una cadena de fecha automáticamente sin proporcionar el formato de fecha y hora. Mi problema es que no necesito emitir la fecha y hora, solo necesito el formato de fecha y hora.
Ejemplo: de "2021-01-01", quiero algo como "%Y-%m-%d" o "yyyy-MM-dd".
Mi única idea era probar el casting con diferentes formatos y obtener uno exitoso, pero no quiero enumerar todos los formatos posibles.
Estoy trabajando con pandas, por lo que puedo usar métodos que funcionan con series o con el analizador de cadena DateTime.
¿Algunas ideas?
En pandas , esto se logra mediante pandas._libs.tslibs.parsing.guess_datetime_format
from pandas._libs.tslibs.parsing import guess_datetime_format guess_datetime_format('2021-01-01') # '%Y-%m-%d'Como siempre habrá una ambigüedad en el día/mes, puede especificar el caso del primer día:
guess_datetime_format('2021-01-01', dayfirst=True) # '%Y-%d-%m'Por favor, mira cuál se adapta mejor a ti:
df['Column'] = df['Column'].dt.strftime("%Y-%m-%d") df['Column'] = pd.to_datetime(df['Column']).dt.date df['Column'] = pd.to_datetime(df['Column']).dt.normalize()el tipo de datos de las dos primeras opciones será objeto;
mientras que el tercero con normalización será datetime.
Puedes probar de esta manera, aunque no estoy seguro.
for col in df.select_dtypes(include['datetime64']).columns.tolist(): df[col] = df[col].astype(str)