Ich habe einen Pandas-Datenrahmen mit einer Anzahl von Spalten, die Zeitstempel für bestimmte Ereignisse enthalten, die mit Objekten passieren können, wo die Objekt-IDs die Zeilen indizieren.Wie zählt man die Anzahl der Zeilen in einem bestimmten Zeitintervall in Python Pandas?
obj_id | event1 | event2 | event3 | ...
1 | datetime| datetime | NaT | ...
... | ... | ... | ... | ...
ich die Anzahl der Vorkommen eines Ereignisses im Laufe des Tages (verwirft das Datum), zählen möchten in Intervallen angeben ich.
Sor weit, ich dieses Problem lösen, indem die Anzahl der Minuten seit Mitternacht recunstructing datetime.hour
und datetime.minute
mit:
i = 5 # number of minutes in the interval I'm interested in
ev1_counts = df.groupby(
df.event1.apply(lambda x: i * ((60*x.hour + x.minute)//i))
)['event1'].count()
Dies macht den Job, aber es scheint unpythonic und ich bin sicher, dass es einen besseren Weg gibt. Aber wie?
Ich habe this question gesehen, aber
time_series = pd.DatetimeIndex(df.event1)
ts_df = pd.Series([1]*len(time_series), index=time_series)
ev1_counts = ts_df.groupby(pd.TimeGrouper(freq = '{:d}Min'.format(i)).count()
Hält die aktuellen Informationen versuchen, die mich zu verwerfen. Die Konvertierung der Objekte pd.datetime
mit der Methode .time()
scheint problematisch zu sein, da das Ergebnis nicht als Datetime-Objekt behandelt werden kann.
Können Sie eine minimale Datenprobe, und das Ergebnis wollen Sie erreichen? –