rslt = df.assign(Consecutive=df.Value.groupby((df.Value != df.Value.shift()
    ).cumsum()).transform('size')).query('Consecutive > 1').groupby(
    'Consecutive').agg({'No': {'No': 'first'}, 'Date': {'BeginDate':
    'first', 'EndDate': 'last'}}).reset_index()
rslt.columns = [(t[1] if t[1] else t[0]) for t in rslt.columns]
How to use pandas to find consecutive same data in time series