我有一个数据框,包含许多天的时间序列数据,这些数据是全天定期抽样的网站点击总数 . 每个新的一天,计数重置为零 . 因此,在第一天结束时,计数已达到9次点击 . 然后在第2天,计数再次从0开始,并在当天结束时达到8次点击......等等
day value time
------------------------
1 0 00:45:00
1 5 02:15:00
1 8 06:55:00
1 9 13:10:00
2 0 00:10:00
2 1 01:00:00
2 7 05:15:00
2 8 11:45:00
3 0 03:00:00
3 4 07:30:00
3 7 15:30:00
我想将各个日子聚合在一起,形成一个累积的时间序列 .
day value time
------------------------
1 0 00:45:00
1 5 02:15:00
1 8 06:55:00
1 9 13:10:00
2 9 00:10:00
2 10 01:00:00
2 16 05:15:00
2 17 11:45:00
3 17 03:00:00
3 21 07:30:00
3 24 15:30:00
熊猫有办法有效地做到这一点吗?非常感谢你的帮助 .
2 回答
你真的在问一些contigiuous组(而不是标准的groupby,它忽略了同一组中的项是否是相邻的)所以我认为你需要使用diff:
注意:NaN转换为True!如果您可以保证每个组都是非空的并且每次都增加,那么
astype(bool)
也不是绝对必要的 .然后,您可以将其乘以相应的(最后)值:
我可能只是将第一个值设置为0(您可以使用
fillna(0)
作为单行):现在,添加这个的cumsum可以获得你想要的结果:
我会做那样的事情
导致