2017-06-10 4 views
2

Ich habe einen Datenrahmen mit vollen Jahresdaten von Werten auf jeder Sekunde:Stundendurchschnitt für jede Woche/Monat in Datenrahmen (gleitender Durchschnitt)

YYYY-MO-DD HH-MI-SS_SSS  TEMPERATURE (C) 
2016-09-30 23:59:55.923  28.63 
2016-09-30 23:59:56.924  28.61 
2016-09-30 23:59:57.923  28.63 
    ...       ... 
2017-05-30 23:59:57.923  30.02 

ich einen neuen Datenrahmen erstellen möge, die jede Woche oder einen Monat dauert Werte und Durchschnittswerte über die gleiche Stunde jeden Tages (Art des gleitenden Durchschnitts aber für jede Stunde).

 Date   TEMPERATURE (C) 
2016-09 00:00:00  28.63 
2016-09 01:00:00  27.53 
2016-09 02:00:00  27.44 
    ... 
2016-10 00:00:00  28.61 
    ...     ... 

Ich bin mir dessen bewusst, dass ich die df in 12 df die für jeden Monat und die Nutzung aufteilen: So ergibt sich für den Monat Fall so sein wird

hour = pd.to_timedelta(df['YYYY-MO-DD HH-MI-SS_SSS'].dt.hour, unit='H') 
df2 = df.groupby(hour).mean() 

Aber Ich suche nach einem besseren und schnelleren Weg.

Danke !!

Antwort

1

Hier ist eine alternative Methode Ihr Datum und Uhrzeit Spalten Umwandlung:

df['datetime'] = pd.to_datetime(df['YYYY-MO-DD'] + ' ' + df['HH-MI-SS_SSS']) 

Zusätzlich könnten Sie groupby sowohl Woche und Stunde einen MultiIndex Datenrahmen bilden (statt Erstellen und Verwalten von 12 dfs):

df.groupby([df.datetime.dt.weekofyear, df.datetime.dt.hour]).mean() 

enter image description here

Verwandte Themen