python 日期按月循环列举,使用python中的日期列表循环24小时

这段代码展示了如何利用numpy和itertools.groupby按日期对时间戳数组进行分组。通过将时间戳转换为只包含日期的形式,可以方便地对数据进行处理。在每个日期组中,可以访问到所有对应于该日期的时间戳,这在处理按时间分组的数据时非常有用。需要注意的是,groupby操作需要输入数据已经排序。
摘要由CSDN通过智能技术生成

如果时间戳是

命令

,我们可以使用

itertools.groupby

函数按相应的日期对数组元素进行分组。

这一天可以通过

np.datetime64.astype(..., dtype='datetime64[D]')

,所以我们可以这样写:

from numpy import datetime64

from functools import partial

from itertools import groupby

for day, timestamps in groupby(data_array,

partial(datetime64.astype, dtype='datetime64[D]')):

# process day and timestamps

pass

在这里

day

是一个

datetime64[D]

numpy对象(它只包含天),以及

timestamps

是一个

可迭代的

(不是列表,但我们可以将其转换为列表)对应的时间戳。

data_array

是包含初始数据的数组。

例如:

>>> for day, timestamps in groupby(data_array,

... partial(datetime64.astype, dtype='datetime64[D]')):

... print((day, list(timestamps)))

...

(numpy.datetime64('2016-12-01'), [numpy.datetime64('2016-12-01T02:00:00.000000000'), numpy.datetime64('2016-12-01T04:00:00.000000000'), numpy.datetime64('2016-12-01T06:00:00.000000000'), numpy.datetime64('2016-12-01T08:00:00.000000000'), numpy.datetime64('2016-12-01T10:00:00.000000000'), numpy.datetime64('2016-12-01T12:00:00.000000000'), numpy.datetime64('2016-12-01T14:00:00.000000000'), numpy.datetime64('2016-12-01T16:00:00.000000000'), numpy.datetime64('2016-12-01T18:00:00.000000000'), numpy.datetime64('2016-12-01T20:00:00.000000000'), numpy.datetime64('2016-12-01T22:00:00.000000000')])

(numpy.datetime64('2016-12-02'), [numpy.datetime64('2016-12-02T00:00:00.000000000'), numpy.datetime64('2016-12-02T02:00:00.000000000'), numpy.datetime64('2016-12-02T04:00:00.000000000'), numpy.datetime64('2016-12-02T06:00:00.000000000'), numpy.datetime64('2016-12-02T08:00:00.000000000'), numpy.datetime64('2016-12-02T10:00:00.000000000'), numpy.datetime64('2016-12-02T12:00:00.000000000'), numpy.datetime64('2016-12-02T14:00:00.000000000'), numpy.datetime64('2016-12-02T16:00:00.000000000'), numpy.datetime64('2016-12-02T18:00:00.000000000'), numpy.datetime64('2016-12-02T20:00:00.000000000'), numpy.datetime64('2016-12-02T22:00:00.000000000')])

(numpy.datetime64('2016-12-03'), [numpy.datetime64('2016-12-03T00:00:00.000000000'), numpy.datetime64('2016-12-03T02:00:00.000000000'), numpy.datetime64('2016-12-03T04:00:00.000000000'), numpy.datetime64('2016-12-03T06:00:00.000000000'), numpy.datetime64('2016-12-03T08:00:00.000000000'), numpy.datetime64('2016-12-03T10:00:00.000000000'), numpy.datetime64('2016-12-03T12:00:00.000000000'), numpy.datetime64('2016-12-03T14:00:00.000000000'), numpy.datetime64('2016-12-03T16:00:00.000000000'), numpy.datetime64('2016-12-03T18:00:00.000000000'), numpy.datetime64('2016-12-03T20:00:00.000000000'), numpy.datetime64('2016-12-03T22:00:00.000000000')])

所以在这里,我们每天都会打印一份

时间戳

,但这是当然的

所有的选择。如示例所示,并非所有切片都具有相同的长度(最后两个切片有一个额外的元素)

请注意

时间戳

是迭代器,如果不将其转换为列表,则在一个循环之后,迭代器将

筋疲力尽的

.

这个

groupby

工作在线性时间内,因为每次它都检查“组键”是否与前一个元素相同,但如前所述,约束是必须对数据进行排序的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值