Groupby与TimeGrouper“向后”
发布于 2021-01-29 16:03:41
我有一个DataFrame
时间序列:
rng = pd.date_range('2016-06-01', periods=24*7, freq='H')
ones = pd.Series([1]*24*7, rng)
rdf = pd.DataFrame({'a': ones})
最后输入是2016-06-07 23:00:00
。我现在想将其归类为两天,基本上是这样的:
rdf.groupby(pd.TimeGrouper('2D')).sum()
但是,我想从我的最后一个数据点开始向后分组,所以不要获得此结果:
a
2016-06-01 48
2016-06-03 48
2016-06-05 48
2016-06-07 24
我更希望这样:
a
2016-06-01 24
2016-06-03 48
2016-06-05 48
2016-06-07 48
并按分组时'3D'
:
a
2016-06-01 24
2016-06-04 72
2016-06-07 72
分组时的预期结果'4D'
是:
a
2016-06-03 72
2016-06-07 96
我无法想到的所有组合closed
,label
等等。
我该如何实现?
关注者
0
被浏览
49
1 个回答
-
由于我主要想按7天(也就是一周)进行分组,因此我现在使用此方法来找到所需的箱:
from pandas.tseries.offsets import Week # Let's not make full weeks hours = 24*6*4 rng = pd.date_range('2016-06-01', periods=hours, freq='H') # Set week start to whatever the last weekday of the range is print("Last day is %s" % rng[-1]) freq = Week(weekday=rng[-1].weekday()) ones = pd.Series([1]*hours, rng) rdf = pd.DataFrame({'a': ones}) rdf.groupby(pd.TimeGrouper(freq=freq, closed='right', label='right')).sum()
这给了我想要的输出
2016-06-25 96 2016-07-02 168 2016-07-09 168