Python Pandas: Agrupe la columna de fecha y hora en agregaciones de hora y minuto

Parece que sería bastante sencillo, pero después de casi un día entero no he encontrado la solución. He cargado mi dataframe con read_csv y fácilmente analicé, combiné e indexé una columna de fecha y hora en una columna, pero ahora quiero poder simplemente remodelar y realizar cálculos basados ​​en grupos de horas y minutos similares a lo que puede hacer en excel pivote.

Sé cómo volver a muestrear en hora o minuto, pero mantiene la parte de la fecha asociada con cada hora / minuto, mientras que quiero agregar el conjunto de datos SOLAMENTE a hora y minuto, similar a agrupar en los pivotes de Excel y seleccionar “hora” y “minuto” pero No seleccionando nada más.

Cualquier ayuda sería muy apreciada.

No puedes hacer, donde df es tu DataFrame:

 times = pd.to_datetime(df.timestamp_col) df.groupby([times.hour, times.minute]).value_col.sum() 

El código de Wes no me funcionó. Pero la función DatetimeIndex ( docs ) hizo:

 times = pd.DatetimeIndex(data.datetime_col) grouped = df.groupby([times.hour, times.minute]) 

El objeto DatetimeIndex es una representación de veces en pandas. La primera línea crea una matriz de los tiempos de datos. La segunda línea utiliza esta matriz para obtener los datos de hora y minuto para todas las filas, lo que permite que los datos se agrupen ( docs ) por estos valores.

Encontré esto cuando estaba buscando este tipo de groupby. El código de Wes de arriba no funcionó para mí, no estoy seguro de que sea porque los cambios en los pandas largo del tiempo.

En pandas 0.16.2 , lo que hice al final fue:

 grp = data.groupby(by=[data.datetime_col.map(lambda x : (x.hour, x.minute))]) grp.count() 

Tendría tuplas (hora, minuto) como el índice agrupado. Si quieres multi-index:

 grp = data.groupby(by=[data.datetime_col.map(lambda x : x.hour), data.datetime_col.map(lambda x : x.minute)])