如何使用pandas中的自定义时间每天对时间序列数据进行分组

时间:2017-08-17 09:00:45

标签: python pandas pandas-groupby

我想每天做一个pandas groupby(例如df.groupby(pd.Grouper(key='ts', freq='D') ts是时间戳列)但是我希望这一天以自定义时间开始和结束(例如,一天从9.00开始00.00)。

这可能吗?

提前谢谢

1 个答案:

答案 0 :(得分:1)

演示:

设定:

In [257]: df = pd.DataFrame({
     ...:   'ts':pd.date_range('2017-01-01 12:33:00',freq='200T',periods=20),
     ...:   'val':np.random.randint(100, size=(20))
     ...: })
     ...:

In [258]: df
Out[258]:
                    ts  val
0  2017-01-01 12:33:00   39
1  2017-01-01 15:53:00    1
2  2017-01-01 19:13:00   98
3  2017-01-01 22:33:00   82
4  2017-01-02 01:53:00   90
5  2017-01-02 05:13:00   35
6  2017-01-02 08:33:00   58
7  2017-01-02 11:53:00   38
8  2017-01-02 15:13:00    1
9  2017-01-02 18:33:00   52
10 2017-01-02 21:53:00   17
11 2017-01-03 01:13:00   45
12 2017-01-03 04:33:00   22
13 2017-01-03 07:53:00   53
14 2017-01-03 11:13:00   89
15 2017-01-03 14:33:00   74
16 2017-01-03 17:53:00    0
17 2017-01-03 21:13:00   35
18 2017-01-04 00:33:00   83
19 2017-01-04 03:53:00   94

解决方案:

In [259]: df.resample('D', on='ts', loffset='9H').sum()
Out[259]:
                     val
ts
2017-01-01 09:00:00  220
2017-01-02 09:00:00  291
2017-01-03 09:00:00  318
2017-01-04 09:00:00  177