df_example = df.sort_values(['START_D', 'STOP_D'])

def collapse(df):
    s, e = 'START_D', 'STOP_D'
grps = df[s].gt(df[e].cummax().shift()).cumsum()
funcs = {s: 'min', e: 'max', 'ID_1': 'first'}
return df.groupby(grps).agg(funcs)
df_example.groupby('ID_1').apply(collapse).reset_index(drop=True)
Combine Dataframe rows on conditions