我想每天做一个pandas groupby(例如df.groupby(pd.Grouper(key='ts', freq='D')
ts
是时间戳列)但是我希望这一天以自定义时间开始和结束(例如,一天从9.00开始00.00)。
这可能吗?
提前谢谢
答案 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