получить первое и последнее значения в группе

У меня есть датафреймdf

df = pd.DataFrame(np.arange(20).reshape(10, -1),
                  [['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'],
                   ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']],
                  ['X', 'Y'])

Как получить первые и последние строки, сгруппированные по первому уровню индекса?

Я старался

df.groupby(level=0).agg(['first', 'last']).stack()

и получил

          X   Y
a first   0   1
  last    6   7
b first   8   9
  last   12  13
c first  14  15
  last   16  17
d first  18  19
  last   18  19

Это так близко к тому, что я хочу. Как я могу сохранить индекс уровня 1 и получить вместо этого:

      X   Y
a a   0   1
  d   6   7
b e   8   9
  g  12  13
c h  14  15
  i  16  17
d j  18  19
  j  18  19

Ответы на вопрос(2)

Ваш ответ на вопрос