将熊猫时间序列折叠成单日

时间:2018-06-20 15:00:17

标签: python python-3.x pandas numpy time-series

我有一个连续几天的时间序列事件-我最感兴趣的是计数/ 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

2 个答案:

答案 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'])