【发布时间】:2017-04-08 00:08:38
【问题描述】:
from datetime import datetime, timedelta
d = datetime.now()
data = [d + timedelta(minutes=i) for i in range(100)]
# prepare and group the data
from itertools import groupby
def get_key(d):
# group by 30 minutes
k = d + timedelta(minutes=-(d.minute % 20))
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)
我有一个大的时间戳数据集,我想把它分成 20 秒的窗口。上面的代码在几分钟内分组效果非常好,但我无法让它在 20 秒内分组
【问题讨论】:
-
timedelta构造函数有一个关键字seconds和datetime有一个字段second那么为什么你的相同方法不起作用? -
我不确定我是否写了 k = d + td(seconds=-(d.second % 20)),它以 1 分钟的间隔将它们分组,我不明白为什么,有什么想法吗?
-
可能是因为,当您在程序的第三行创建测试数据集时,您创建的所有数据点相隔一分钟。
-
我尝试了 1 秒,但还是一样,好像忽略了秒数
-
在您的
get_key函数中,最后一行的最后一个字段应该是秒。您始终将其设置为 0。应该是k.second。