Tengo una serie de veces con la temperatura y la radiación en pandas dataframe
. La resolución de tiempo es de 1 minuto en pasos regulares.¿Cómo volver a muestrear un marco de datos con diferentes funciones aplicadas a cada columna?
import datetime
import pandas as pd
import numpy as np
date_times = pd.date_range(datetime.datetime(2012, 4, 5, 8, 0),
datetime.datetime(2012, 4, 5, 12, 0),
freq='1min')
tamb = np.random.sample(date_times.size) * 10.0
radiation = np.random.sample(date_times.size) * 10.0
frame = pd.DataFrame(data={'tamb': tamb, 'radiation': radiation},
index=date_times)
frame
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 241 entries, 2012-04-05 08:00:00 to 2012-04-05 12:00:00
Freq: T
Data columns:
radiation 241 non-null values
tamb 241 non-null values
dtypes: float64(2)
¿Cómo puedo abajo muestra esta dataframe
a una resolución de una hora, el cálculo de la hora significa para la temperatura y la hora suma para la radiación?
Esto se puede extender a una lista de funciones por columna: 'frame.resample ('1H', how = {'radiation': [np.sum, np.min], 'tamb': np.mean})'.El DataFrame resultante tiene un MultiIndex en sus columnas, con el nombre original de la columna como nivel 0 y el nombre de la función como nivel 1. –
Para agregar a mi comentario anterior: en lugar de una lista de funciones por columna, también puede usar un diccionario, donde la clave es el nombre de la nueva columna y el valor es la función a usar: 'frame.resample ('1H', how = {'radiation': {'sum_rad': np.sum, 'min_rad': np.min} , 'tamb': np.mean}) ' –
indique si desea agregar una nueva columna al resultado, como count() de cada fila en el período de remuestreo. – codingknob