Кажется, что все, что вам нужно, это сбросить индекс и использовать агрегирование для полного возврата кадра данных:
testIDs.groupby(
['id', pd.TimeGrouper(key='date',freq='20s')]
).agg({'quadrant':'count'}).reset_index()
Редактировать : Если ваш сектор также должен быть сгруппирован :
testIDs.groupby(
['id', pd.TimeGrouper(key='date',freq='20s'), 'quadrant']
).count().reset_index()
Обратите внимание, что если у вас много столбцов, он будет учитываться для всех столбцов.