Skip to main content
 首页 » 编程设计

python之有没有办法 "fill in"一系列日期时间戳

2025年05月04日13yxwkf

我有一个字典,其中包含一个每小时的日期时间戳(自纪元以来的秒数)作为它们的键,以及一个整数作为每个值的值。目前,我有一系列不完整的每小时日期时间,我想填补任何空白。

我的意思是,如果我有 5/15/2015 17:00:00 的条目和 5/15/2015 19:00:00 的条目,但没有 5/15/2015 18:00 的条目:00,有没有一种方法可以快速迭代并用值(比如“0”)填充那些缺失的每小时键。

我有大量原始文本数据,其中包括以下格式的日期:YYYY-mm-DD HH:MM:SS,我四舍五入到小时(通过使用 datetime.datetime.strptime 转换为自纪元以来的秒数,并截断分钟和秒数),并从本质上计算每小时在原始数据中出现的次数。所以我的字典看起来像 {'2015-04-02 04:00:00': 1, '2015-06-06 13:00:00': 4, ...}。每小时都有空档,我想快速有效地填补它们。

我目前的解决方案包括找到字典键的最小值,然后创建一个全新的字典并每小时填充一次,直到原始字典的最大值为止。然后我只是重做我编写的代码来创建原始字典,它更改了要更改数据的值,但将“空”值保留为 0。显然不优雅...

请您参考如下方法:

解决方案可能是:

import datetime 
 
# your dictionnary 
data = {...} 
 
start = datetime.datetime.fromtimestamp(0) 
step = datetime.timedelta(seconds=3600) 
 
stop = datetime.datetime.now() 
while start <= stop: 
    key = start.strftime('%d/%m/%Y %H:%M:%S') 
    if key not in data: 
        data[key] = 0 
    start+= step 

但是,是否值得填补空白?或者你的用例是 collections.defaultdict ?

例子:

>>> data = collections.defaultdict(int) 
>>> print data['5/15/2015 17:00:00'] 
0