Благодаря ImportanceOfBeingErnest я получил то, что хотел. Вот полная подправленная версия кода, для тех, кому она может понадобиться в будущем. Я добавил legend = False, без этого val1 и val2 написаны друг на друга и выглядят грязно.

аюсь перебрать объект groupby и построить каждую группу. Но у меня есть некоторые проблемы. Может кто-нибудь сказать, пожалуйста, где я иду не так?

df = pd.DataFrame([['item1',2000,1, 2], ['item1',2001,1, 2], ['item1',2002,1, 2], 
              ['item2',2000,1, 2], ['item2',2001,1, 2], ['item2',2002,1, 2]],
              columns=['mykey', 'year','val1','val2'])

grouped = df.groupby('mykey')
for name,group in grouped:
  fig = plt.figure()
  ax1 = fig.add_subplot(111)
  group.val1.plot.line(ax=ax1, ylim=[5,20], color='red',x=group.year)
  ax1.set_ylabel('val1')
  ax2 = ax1.twinx()
  group.val2.plot.line(ax=ax2, ylim=[5,20], color='blue' ,x=group.year)
  ax2.set_ylabel('val2')
  plt.title(str(name), fontsize=15);

Кажется, я близко, но есть некоторые проблемы, где-то.

Первая проблема заключается в том, что в объекте groupby есть 5 групп. Я получаю 5 цифр, как хочу, но только на первой есть графики (линии). Другие цифры пустые с правильным заголовком, есть идеи, что не так с моим кодом?
Как я могу установить столбец / ключ группы в качестве оси X, я пробовал это x = group.desiredx, но он ничего не делает.

MyKey | год | знач1 | val2
item1 | 2000 | 5 | 34
item2 | 2001 | 45 | 34
item3 | 2002 | 34 | 34
item1 | 2000 | 22 | 65
item2 | 2001 | 34 | 54
item3 | 2002 | 12 | 54
item1 | 2000 | 23 | 54
item2 | 2001 | 34 | 34
item3 | 2002 | 21 | 21

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

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