如何根据缺失日期将缺失日期的日期时间列表拆分为列表列表?
使用下面的例子:
date_list = [
datetime.datetime(2012,1,1,0,0,0),
datetime.datetime(2012,1,2,0,0,0),
datetime.datetime(2012,1,4,0,0,0),
datetime.datetime(2012,1,7,0,0,0),
datetime.datetime(2012,1,8,0,0,0),
]
我这里要找的结果是
[[datetime.datetime(2012,1,1,0,0,0), datetime.datetime(2012,1,2,0,0,0)]
[datetime.datetime(2012,1,4,0,0,0)],
[datetime.datetime(2012,1,7,0,0,0), datetime.datetime(2012,1,8,0,0,0)]]
我试过使用 groupby
但我不知道该用什么作为 key 。
[list(g) for k, g in itertools.groupby(date_list, key=lambda d: d.day)]
最佳答案
这适用于给定的示例...
>>> import datetime
>>> date_list = [
... datetime.datetime(2012,1,1,0,0,0),
... datetime.datetime(2012,1,2,0,0,0),
... datetime.datetime(2012,1,4,0,0,0),
... datetime.datetime(2012,1,7,0,0,0),
... datetime.datetime(2012,1,8,0,0,0),
... ]
>>> import itertools
>>> [list(g) for k, g in itertools.groupby(enumerate(date_list), key=lambda (i, x): i-x.day)]
[[(0, datetime.datetime(2012, 1, 1, 0, 0)), (1, datetime.datetime(2012, 1, 2, 0, 0))], [(2, datetime.datetime(2012, 1, 4, 0, 0))], [(3, datetime.datetime(2012, 1, 7, 0, 0)), (4, datetime.datetime(2012, 1, 8, 0, 0))]]
如果你不想要索引,这可能会更好......
>>> [[v for i, v in g] for k, g in itertools.groupby(enumerate(date_list), key=lambda (i, x): i-x.day)]
[[datetime.datetime(2012, 1, 1, 0, 0), datetime.datetime(2012, 1, 2, 0, 0)], [datetime.datetime(2012, 1, 4, 0, 0)], [datetime.datetime(2012, 1, 7, 0, 0), datetime.datetime(2012, 1, 8, 0, 0)]]
关于Python 根据缺失的日期拆分日期时间列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27306594/