gpt4 book ai didi

python - 在 Python 中合并时间戳列表

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:29 25 4
gpt4 key购买 nike

请帮我找到一个不需要大量循环的解决方案。我有一个时间戳列表,例如

["2014-04-11 08:00:00.000000",
"2014-04-11 09:35:00.000000",
"2014-04-11 09:35:00.000000",
"2014-04-11 09:40:00.000000",
"2014-04-11 11:00:00.000000",
...]

我想“合并”列表中的时间戳,以便彼此的公共(public)窗口(例如 10 分钟)内的时间戳成为一个条目。所以上面的示例列表将变成

["2014-04-11 08:00:00.000000",
"2014-04-11 09:35:00.000000",
"2014-04-11 11:00:00.000000",
...]

另请注意,合并后的三个时间戳的值是“9:35”而不是“9:40”。我想合并时间戳以转到最频繁的条目。如果有平局,则合并较早/最频繁的时间戳。

而且我还试图跟踪合并了多少时间戳。因此,对于上述示例,保留计数的列表将是 [1,3,1,...]

最佳答案

这可以通过以下方式解决:

import datetime

data = ["2014-04-11 08:00:00.000000", "2014-04-11 09:35:00.000000", "2014-04-11 09:35:00.000000", "2014-04-11 09:40:00.000000", "2014-04-11 11:00:00.000000"]

delta = datetime.timedelta(minutes=10)
result = []
bucket = []
current = None
for item in data:
datetime_obj = datetime.datetime.strptime(item, '%Y-%m-%d %H:%S:%M.%f')
if current is None:
current = datetime_obj
bucket = [current]
continue
if (datetime_obj - current) <= delta:
bucket.append(datetime_obj)
else:
result.append(bucket)
current = datetime_obj
bucket = [current]

if bucket:
result.append(bucket)

for bucket in result:
print(bucket)

例子:

>>> for bucket in result:
... print(bucket)
...
[datetime.datetime(2014, 4, 11, 8, 0)]
[datetime.datetime(2014, 4, 11, 9, 0, 35), datetime.datetime(2014, 4, 11, 9, 0, 40)]
[datetime.datetime(2014, 4, 11, 11, 0)]

result 数据结构可用于计算所需值:标识窗口的每个时间戳以及创建该窗口可用(“消耗”)的时间戳数。

关于python - 在 Python 中合并时间戳列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28057544/

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