Groupby with TimeGrouper #39;backwards#39;(Groupby 与 TimeGrouper 向后)
问题描述
我有一个包含时间序列的 DataFrame:
I have a DataFrame containing a time series:
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.我现在想按两天分组,基本上是这样的:
Last entry is 2016-06-07 23:00:00. I now want to group this by, say two days, basically like so:
rdf.groupby(pd.TimeGrouper('2D')).sum()
但是,我想从最后一个数据点开始向后分组,所以不要得到这个结果:
However, I want to group starting from my last data point backwards, so instead of getting this result:
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'分组时的预期结果是:
Expected outcome when grouping by '4D' is:
a
2016-06-03 72
2016-06-07 96
我无法通过我能想到的 closed、label 等的每种组合来实现这一点.
I am not able to get this with every combination of closed, label etc. I could think of.
我怎样才能做到这一点?
How can I achieve this?
推荐答案
由于我主要想按 7 天(也就是一周)分组,所以我现在使用这种方法来找到所需的垃圾箱:
Since I primarily want to group by 7 days, aka one week, I am using this method now to come to the desired bins:
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
这篇关于Groupby 与 TimeGrouper '向后'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Groupby 与 TimeGrouper '向后'
基础教程推荐
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
