如何计算每小时的不同价值出现次数?

时间:2018-06-27 14:15:46

标签: python

我有一个名为df的数据帧,它看起来像这样:timestamp的一列和s的一列只有三个可能的值1, 0, -1。现在,我要计算每小时有多少1, 0 ,-1。有人可以帮忙吗?谢谢。

timestamp       s
1/6/2018 23:10  0
1/6/2018 23:15  0
1/6/2018 23:23  0
1/6/2018 23:34  0
1/7/2018 0:05   0
1/7/2018 0:09   0
1/7/2018 0:46   0
1/7/2018 0:49   0
1/7/2018 0:49  -1
1/7/2018 0:52  -1
1/7/2018 1:17   1
1/7/2018 1:26   0
1/7/2018 2:16   0
1/7/2018 2:23   1
1/7/2018 2:27   1
1/7/2018 2:34   0
1/7/2018 2:41   1
1/7/2018 2:43   1
1/7/2018 2:49   1

我所需的数据框如下所示:

timestamp      s_-1 s_0 s_1
1/6/2018 23:00  0   4   0
1/7/2018 0:00   2   4   0
1/7/2018 1:00   0   2   3
1/7/2018 2:00   0   2   5

2 个答案:

答案 0 :(得分:0)

您可以通过创建直至日期和小时的时间戳字典作为键来实现。因此您的键看起来像[1/6/2018 23], [1/7/2018 0], ...,然后您的值可以是s值的列表,然后可以遍历字典并计数!

答案 1 :(得分:0)

一种粗粒进样解决方案草图

  1. 在df中找到最小的时间戳,并使用strptime将i转换为日期时间对象dt
  2. 定义小时开始于hour_start = dt - timedelta(minutes=dt.minute,seconds=dt.second,microseconds=dt.microsecond)
  3. 通过使用while循环进行迭代并以timedelta为+= timedelta(hours=1)递增hour_start来预定义所有小时开始的列表/结构,并在超过最后一个时间戳时停止。
  4. 再次遍历数据帧并确定将每个条目放置在哪个存储桶中

这是一种非常钝的策略,但是您必须完成思考过程,然后自己将其放入代码中。让我知道您是否需要进一步解释。