我有一个连续几天的时间序列事件-我最感兴趣的是计数/ 10分钟间隔。因此,当前,在重新采样后,看起来像这样
2018-02-27 16:20:00 5
2018-02-27 16:30:00 4
2018-02-27 16:40:00 0
2018-02-27 16:50:00 0
2018-02-27 17:00:00 0
...
2018-06-19 05:30:00 0
2018-06-19 05:40:00 0
2018-06-19 05:50:00 1
如何将这些数据“折叠”成只有一个“一天”的数据,并将计数加在一起?所以看起来像这样
00:00:00 0
00:10:00 0
...
11:00:00 47
11:10:00 36
11:20:00 12
...
23:40:00 1
23:50:00 0
答案 0 :(得分:0)
如果系列索引是DatetimeIndex,则可以使用属性time
-如果它是DataFrame并且日期时间是列,则可以使用.dt.time
。例如:
In [19]: times = pd.date_range("2018-02-27 16:20:00", "2018-06-19 05:50:00", freq="10 min")
...: ser = pd.Series(np.random.randint(0, 6, len(times)), index=times)
...:
...:
In [20]: ser.head()
Out[20]:
2018-02-27 16:20:00 0
2018-02-27 16:30:00 1
2018-02-27 16:40:00 4
2018-02-27 16:50:00 5
2018-02-27 17:00:00 0
Freq: 10T, dtype: int32
In [21]: out = ser.groupby(ser.index.time).sum()
In [22]: out.head()
Out[22]:
00:00:00 285
00:10:00 293
00:20:00 258
00:30:00 263
00:40:00 307
dtype: int32
In [23]: out.tail()
Out[23]:
23:10:00 280
23:20:00 291
23:30:00 236
23:40:00 303
23:50:00 299
dtype: int32
答案 1 :(得分:0)
如果我理解正确,那么您希望在第一时间列中每10分钟间隔求一个值的总和。您也许可以尝试以下方法:
df.groupby('columns')['value'].agg(['count'])