Ho una serie di volte con temperatura e radiazione in un panda dataframe
. La risoluzione temporale è di 1 minuto a passi regolari.Come ricampionare un dataframe con diverse funzioni applicate a ciascuna colonna?
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)
Come posso down-campione questo dataframe
ad una risoluzione di un'ora, il calcolo del oraria significare per la temperatura e l'orario somma per le radiazioni?
Questo può essere esteso a un elenco di funzioni per colonna: 'frame.resample ('1H', how = {'radiation': [np.sum, np.min], 'tamb': np.mean})'.Il DataFrame risultante ha un MultiIndex sulle sue colonne, con il nome della colonna originale come livello 0 e il nome della funzione come livello 1. –
Per aggiungere al mio commento precedente: invece di un elenco di funzioni per colonna, puoi anche usare un dizionario, dove la chiave è il nuovo nome della colonna e il valore è la funzione da utilizzare: 'frame.resample ('1H', how = {'radiation': {'sum_rad': np.sum, 'min_rad': np.min} , 'tamb': np.mean}) ' –
dire se si desidera aggiungere una nuova colonna al risultato, come count() di ogni riga nel periodo di ricampionamento. – codingknob