如何计算python pandas中给定时间间隔内的行数?

时间:2017-04-07 08:18:29

标签: python pandas datetime

我有一个pandas数据框,其中包含一组列,其中包含可能发生在对象上的某些事件的时间戳,其中对象ID会对行进行索引。

obj_id | event1  |  event2  |  event3  |  ...
1      | datetime| datetime |  NaT     |  ...
...    | ...     | ...      |  ...     |  ...

我想按照我指定的时间间隔计算一天中事件的发生次数(丢弃日期)。

Sor,我通过使用datetime.hourdatetime.minute重新计算午夜以来的分钟数来解决这个问题:

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()

这可以完成这项任务,但它似乎是单声道的,我确信有更好的方法。但是如何?

我见过this question,但正在尝试

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()

保留我要丢弃的日期信息。使用pd.datetime方法转换.time()对象似乎有问题,因为结果不能被视为日期时间对象。

1 个答案:

答案 0 :(得分:1)

您似乎可以省略apply并简化解决方案:

ev1_counts = df.groupby((60*df.event1.dt.hour+df.event1.dt.minute)//i * i)['event1'].count()