es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Método para eliminar caracteres de fecha no deseados en un dataframe de pandas

He recopilado algunos datos en un dataframe de pandas. Actualmente, la columna de fechas no es útil en absoluto.
Pude eliminar los corchetes cuadrados junto con varias informaciones irrelevantes con:

df['Fecha'] = df['Fecha'].str.replace(r"\(.*\)","")

Sin embargo, todavía hay mucha información que no necesito. Solo necesito la fecha, el mes y el año.
Aquí hay un ejemplo de salida del dataframe [‘Fecha’]:

  • 14 septiembre 1932 14:40
  • septiembre 6, 1943 6:06 pm
  • 15 noviembre 1991 alrededor de las 4:00 pm hora local
  • julio 9 1981 01:47 CST 17:47 UTC
  • 24 mayo 1847 ~6:50 am

Consideré intentar convertir el mes en número y luego especificar que, posteriormente, son 8 caracteres dd/mm/yyyy, luego eliminar todo. No estoy seguro de cómo convertir cada mes en un entero y luego eliminar todo después de 8 caracteres. Además, un enfoque de “8 caracteres” podría no ser el mejor dado que no todas las fechas se dan por día (dd). ¿Alguna sugerencia mejor?

Gracias por su tiempo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una forma de abordar esto podría ser utilizar expresiones regulares para extraer el mes, día y año de la columna Fecha, y luego crear una nueva columna con esta información. Aquí hay un ejemplo utilizando la librería dateutil para analizar las fechas:

    from dateutil import parser
    
    # crear una nueva columna con fechas analizadas
    df['fecha_analizada'] = df['Fecha'].apply(parser.parse)
    
    # crear nuevas columnas con el año, mes y día extraídos de la fecha analizada
    df['año'] = df['fecha_analizada'].dt.year
    df['mes'] = df['fecha_analizada'].dt.month
    df['día'] = df['fecha_analizada'].dt.day
    
    # eliminar las columnas que ya no son necesarias
    df = df.drop(['Fecha', 'fecha_analizada'], axis=1)
    

    Este código primero crea una nueva columna ‘fecha_analizada’ aplicando la función parse de la librería dateutil a cada fila de la columna ‘Fecha’. Esta función intenta analizar cada cadena como una fecha, y devuelve un objeto datetime.

    A continuación, el código extrae el año, mes y día de la fecha analizada utilizando el accesor dt, que está disponible en objetos datetime cuando se almacenan en una Serie pandas.

    Finalmente, el código elimina la columna original ‘Fecha’ (que ya no es necesaria) y la columna ‘fecha_analizada’ (que fue solo un paso intermedio temporal).

    Esto debería brindarle un marco de datos con columnas para el año, mes y día, basadas en la información de la columna ‘Fecha’ original. Tenga en cuenta que esto asume que las fechas están principalmente en formatos estándar (por ejemplo, “14 September 1932 14:40” o “July 9 1981 01:47 CST 17:47 UTC”), y puede que no funcione tan bien para formatos más inusuales.

Comments are closed.