我有一个字典,其中包含一个每小时的日期时间戳(自纪元以来的秒数)作为它们的键,以及一个整数作为每个值的值。目前,我有一系列不完整的每小时日期时间,我想填补任何空白。
我的意思是,如果我有 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
