2017-10-18 4 views
1

Ich benutze Pandas, um einen Datenrahmen zu sortieren und die Anzahl der Werte (Zeilen) zu zählen, die in einen Stundenintervall fallen. Mein Datenrahmen ist col_times und sieht wie folgt benannt:Resample in Pandas: setze Startwert für Zeit

enter image description here

ich col_times.set_index('date_time').resample(rule = 'H')['Uhrzeit'].count() dann zählen verwenden, um wie viele Werte in jeder Stunde ist. Dies beginnt um 14:00:00, da es jetzt einen Wert davor gibt, der früheste Zeitpunkt ist 14:57:07. Allerdings muss ich wegen der Logik, die ich habe, um 10:00 Uhr anfangen zu zählen und das muss ich auf verschiedene Datenrahmen anwenden, ich muss sehen, dass zwischen 10:00:00 und 10:59 kein Wert ist: 59. Wie stelle ich die Resample-Funktion ein?

Antwort

1

Sie müssen neue Zeile mit Datum beginnt, sich von 10:00 anhängen:

col_times = col_times.set_index('date_time') 
date = pd.to_datetime(col_times.index.min().replace(hour=10, minute=0)) 
col_times.loc[date] = np.nan 
print (col_times) 
          Datum Uhrzeit 
date_time         
2017-10-16 14:57:07 16.10.2017 14:57:07 
2017-10-16 14:57:49 16.10.2017 14:57:49 
2017-10-16 14:57:57 16.10.2017 14:57:57 
2017-10-16 14:58:11 16.10.2017 14:58:11 
2017-10-16 14:58:21 16.10.2017 14:58:21 
2017-10-16 10:00:07   NaN  NaN 

df = col_times.resample(rule = 'H')['Uhrzeit'].count() 
print (df) 
date_time 
2017-10-16 10:00:00 0 
2017-10-16 11:00:00 0 
2017-10-16 12:00:00 0 
2017-10-16 13:00:00 0 
2017-10-16 14:00:00 5 
Freq: H, Name: Uhrzeit, dtype: int64 
+0

Awesome, wie immer die einfachsten Lösungen die besten sind ones.Thank Sie. Eine Frage: brauche ich numpy um die 'NaN' Werte zu erzeugen? – rashid

+0

Ja, Sie haben Recht! Vielen Dank. – jezrael

Verwandte Themen