Вы можете иметь два столбца для различий. Один для отличия от следующего ряда и один от предыдущего ряда. Затем вы можете использовать np.where для фильтрации столбцов, которые имеют значения 1 для первой разницы ИЛИ -1 для второй разницы.
df=pd.DataFrame({'group':list('AAAAAAAAAABBBBBBBBBB'),'Year':[2000,2001,2002,2003,2005,2007,2008,2009,2010,2011,2005,2006,2007,2009,2011,2013,2014,2015,2016,2017]})
df['year_diff']=df.groupby(['group'])['Year'].diff()
df['year_diff2']=df.groupby(['group'])['Year'].diff(-1)
df['check']=np.where((df.year_diff==1) | (df.year_diff2==-1),True,False)
А затем отбросьте все строки, где df.check == False.
Это похоже на длинный метод, но я думаю, что довольно легко логически следовать процессу.