我想以与此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
答案 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