在日期索引python列表中标识连续日期组

时间:2017-03-19 12:26:04

标签: python datetime itertools

我想以与此question类似的方式识别日期时间索引中的连续日期组(无时间间隔)

所以我想说我创建了一个带有间隙的日期时间列表

ref=pd.date_range(start='2014-01-01 08:00:00',end='2014-01-01 09:30:00',freq='10 min')
ref=ref.delete([3,4])

'''how should I define my lambda function in order to iterate on consecutive datetime elements'''

ranges = []
for k, g in groupby(enumerate(ref), lambda (i,x):i-x):
    group = map(itemgetter(1), g)
    ranges.append((group[0], group[-1]))

所以结果应该是

[('2014-01-01 08:00:00','2014-01-01 08:20:00'),('2014-01-01 08:50:00',
               '2014-01-01 09:30:00')]

我知道如何使用列表理解和for循环,但我正在寻找更有效的东西,比如这个itertools

1 个答案:

答案 0 :(得分:0)

所以最后我得到了一些东西

groups=[list(g) for k, g in groupby(izip(ref,ref[1:]), lambda (i,x):x-i) if k==pd.Timedelta('10 min').to_timedelta64()]
#groups includes the groups of elements continuos. No 10 min gaps
ranges=[(i[0][0],i[-1][-1])for i in groups]
#ranges, the first and final value