我有一个名为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
答案 0 :(得分:0)
您可以通过创建直至日期和小时的时间戳字典作为键来实现。因此您的键看起来像[1/6/2018 23], [1/7/2018 0], ...
,然后您的值可以是s值的列表,然后可以遍历字典并计数!
答案 1 :(得分:0)
hour_start = dt - timedelta(minutes=dt.minute,seconds=dt.second,microseconds=dt.microsecond)
+= timedelta(hours=1)
递增hour_start来预定义所有小时开始的列表/结构,并在超过最后一个时间戳时停止。这是一种非常钝的策略,但是您必须完成思考过程,然后自己将其放入代码中。让我知道您是否需要进一步解释。