Вы можете использовать numpy
boradcast
s1=df.starttime.values
s2=df.endtime.values
sum(np.minimum(s2[:,None],s2)-np.maximum(s1[:,None],s1)>0)>1
Out[36]: array([ True, True, False])
Объяснение:
1-й: оверлей для диапазона
(x1, y1) с (x2, y2)min (y2, y1) -max (x1, x2)> 0, тогда два диапазона перекрываются
2-й: почему нужно больше 2, поскольку я использовал numpy
braod cast, поэтому диагональ всегда представляла себясравнениеТогда нам нужно больше двух.
Обновление:
Если у вас есть df и split df1 .... dfn (посмотрите на np.split)
s1=df.starttime.values
s2=df.endtime.values
l=[df1,df2,df3,df4,df5...]
n=[]
for x in l:
n.append(sum(np.minimum(s2[:,None],x.values)-np.maximum(s1[:,None],x.values)>0)>1)