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.

Problemas con .dt y cambios en el horario de verano en Python.

Me gustaría sumar en un mes determinado en una columna específica. Dado que tengo muchos meses, los separo por mes. Funciona bien antes del 31 de octubre de 2021 y también cuando hago un conjunto de datos separado después del 31 de octubre.

Actualmente, mi columna de fecha se ve así:

2021-10-31T01:59:52+02:00

y así:

2021-10-31T02:00:02+01:00

Mi código se ve así:

df_merged[‘Time’] = pd.to_datetime(df_merged[‘Time’])

df_ny5=df_merged.groupby(df_merged[‘Time’].dt.strftime(‘%B’))[‘ApcUptime_Evap’].mean().sort_values()

Y obtengo el siguiente error cuando compilo el código en el conjunto de datos completo:

Solo se puede usar el accesor .dt con valores tipo datetimelike.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “Solo se puede usar el accesor .dt con valores de tipo datetime” sugiere que los datos en la columna ‘Time’ pueden no estar en el formato que pandas puede reconocer como un tipo de dato datetime. Una posible razón para este problema es que la columna ‘Time’ contiene algunos valores inválidos o faltantes.

    Para solucionar este problema, puedes intentar limpiar tus datos eliminando cualquier fila con valores inválidos o faltantes en la columna ‘Time’. También puedes verificar el tipo de dato de la columna ‘Time’ utilizando el atributo dtype, y convertirlo al formato datetime si es necesario.

    Suponiendo que la columna ‘Time’ ya está en el formato correcto, una solución potencial para sumar por mes en una determinada columna es utilizar la función resample() en pandas. Por ejemplo:

    df_merged['Time'] = pd.to_datetime(df_merged['Time'])
    
    # Establece la columna 'Time' como índice
    df_merged = df_merged.set_index('Time')
    
    # Resample los datos por mes y suma los valores en la columna 'ApcUptime_Evap'
    df_monthly = df_merged.resample('M')['ApcUptime_Evap'].sum()
    

    Esto creará un nuevo DataFrame ‘df_monthly’ que contiene la suma mensual de la columna ‘ApcUptime_Evap’. Puedes ajustar la función resample() para utilizar diferentes intervalos de tiempo (por ejemplo, ‘D’ para días, ‘H’ para horas, etc.) dependiendo de tus necesidades.

Comments are closed.