gpt4 book ai didi

Python:将数天的数据分组为时隙(分钟)

转载 作者:太空狗 更新时间:2023-10-29 22:13:31 27 4
gpt4 key购买 nike

我有一个以 mS 精确间隔发生的事件列表,跨越几天。我想将发生在“每 n 分钟”时段内的所有事件聚集在一起(可以是 20 个事件,也可以没有事件)。我为每个事件都有一个 datetime.datetime 项,因此我可以毫无困难地获取 datetime.datetime.minute

我的事件列表是按时间顺序排列的,最早的在前,最晚的在后。该列表在我工作的时间段内是完整的。

想法是我可以更改列表:-

[[a],[b],[c],[d],[e],[f],[g],[h],[i]...]

其中 a、b、c 出现在第 0 分钟到 29 分钟之间,d、e、f、g 出现在第 30 分钟到 59 分钟之间,0 到 29 分钟之间没有任何内容(下一小时),h、i 出现在 30 到 59 分钟之间...... .

进入新列表:-

[[[a],[b],[c]],[[d],[e],[f],[g]],[],[[h],[i]]...]

我不确定如何构建一个循环遍历两个时隙直到时间序列列表结束的迭代器。任何我能想到的使用 xrange 的东西一旦完成就会停止,所以我想知道是否有一种使用“while”来进行切片的方法?

我也会使用较小的时间段,可能是 5 分钟,我使用 30 分钟作为演示的较短示例。

(对于上下文,我正在为新西兰最近的地震制作一个基于时间的地理绘图 View 。并希望一步显示在一小段时间内发生的所有地震以加快重播)

最佳答案

# create sample data
from datetime import datetime, timedelta
d = datetime.now()
data = [d + timedelta(minutes=i) for i in xrange(100)]

# prepare and group the data
from itertools import groupby

def get_key(d):
# group by 30 minutes
k = d + timedelta(minutes=-(d.minute % 30))
return datetime(k.year, k.month, k.day, k.hour, k.minute, 0)

g = groupby(sorted(data), key=get_key)

# print data
for key, items in g:
print key
for item in items:
print '-', item

这是 this 的 Python 翻译answer,它通过将日期时间四舍五入到下一个边界并将其用于分组来工作。


如果您真的需要可能的空组,您可以使用这种或类似的方法添加它们:

def add_missing_empty_frames(g):
last_key = None
for key, items in g:
if last_key:
while (key-last_key).seconds > 30*60:
empty_key = last_key + timedelta(minutes=30)
yield (empty_key, [])
last_key = empty_key
yield (key, items)
last_key = key

for key, items in add_missing_empty_frames(g):
...

关于Python:将数天的数据分组为时隙(分钟),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17851412/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com