Pandas Как отобрать срез строк по группам после фильтрования строк фрейма

Имеется фрейм данных:

data = {'фрукт': ['груша','груша','арбуз','банан','груша', 'груша', 'вишня', 'груша', 'вишня', 'абрикос', 'груша', 'груша', 'банан'],
'страна': ['россия','сша', np.nan, 'россия', np.nan, np.nan,'канада', 'франция', 'португалия', 'испания', np.nan, np.nan, 'перу'],
'id': ['01','01','01','011', '011', '011', '011', '6', '6', '5', '5', '5', '5'],
'месяц': ['январь','январь','январь','январь', 'январь', 'январь', 'январь', 'март', 'март', 'апрель', 'апрель', 'апрель', 'апрель']        
}
dates = pd.DataFrame(data, columns = ['фрукт','страна', 'id', 'месяц'])

введите сюда описание изображения

Нужно отфильтровать срезы строк с грушей так, чтобы за каждый месяц срез начинался со второй строки, содержащей грушу, и заканчивался строкой, следующей после последней строки с грушей. Обязательное условие - группировка, а не сортировка. Задачу решаю в общем виде, т.е. предположим , что вместо месяца даны id. Поэтому сортировка уже не поможет

Как можно это сделать?

Ожидаемый результат (также на первом скриншоте выделил, что должны получить в результате):

введите сюда описание изображения


Ответы (2 шт):

Автор решения: CrazyElf

Я посмотрел, ответ будет тот же самый, что и в предыдущем вашем вопросе, если данные уже отсортированы нужным образом по месяцам:

dates.loc[(dates.фрукт == 'груша').shift(fill_value=False)]

Вывод:

фрукт   страна  вид_фр  месяц
1   груша   сша 2   январь
2   арбуз   NaN 3   январь
5   груша   NaN 7   февраль
6   вишня   канада  5   февраль
8   вишня   португалия  10  март
11  груша   NaN 7   апрель
12  банан   перу    7   апрель

А если нужной сортировки нет, то нужно завести колонку с цифровыми номерами месяцев (иначе нормально не отсортируется) и предварительно сделать dates = dates.sort_values("номер_месяца").

А группы тут никак не нужны, достаточно сортировки.

→ Ссылка
Автор решения: formanite
dates.groupby('id').head(1000000000).loc[(dates.фрукт == 'груша').shift(fill_value=False)]

Вывод:

введите сюда описание изображения

→ Ссылка