如何计算给定时间间隔内的数据点数?

数据挖掘 Python 时间序列 熊猫 数据争吵
2022-02-17 21:54:44

我有一个数据框,其中有一列是时间戳。我已使用 pandas to_datetime()方法将该列转换为日期时间对象。但是我想要的是count, for each time stamp, the number of timestamps that fall between this timestamp and prior 15 minutes

例如:如果时间戳是 (2018,7,6,13,55) [年、月、日、小时、分钟格式],那么我想计算介于该时间戳和时间戳 (2018,7,6,13,40)。

很容易看出需要做什么,但它涉及在数据集上反复来回走动。我有接近 750,000 个数据点,我认为效率不高。

我怎样才能有效地做到这一点?

任何建议/提示将不胜感激。

谢谢。

2个回答

@Aditya 给出的答案非常好,而且很有教育意义,尽管它已how被弃用。所以正确的答案如下:

df.resample("15T").agg({'count':'sum'})

你可以这样做resample

  • 首先,如果您还没有这样做,我们应该在时间戳列上建立索引:

    df.set_index('time', inplace=True)

  • 我们将添加一个临时列(你需要一些东西来聚合):

    df['count'] = 1

  • 最后根据需要重新采样:

    df.resample('15T', how='sum')

或者

因为有了 Pandas,你可以轻松地减去它们;假设您已经对时间戳进行了排序,现在您可以轻松地迭代和isin使用pd.timedelta()...

像这样的东西应该可以工作,因为

current_time<=current_time+timedelta(15 mins),你可以数然后使用isin等等.size()......