Pandas: lista dividida na coluna em várias linhas

Eu tenho uma pergunta sobre como dividir uma lista em uma coluna de quadro de dados em várias linhas.

Digamos que eu tenho esse quadro de dados:

  Job position   Job type  id
0          [6]        [1]   3
1       [2, 6]  [3, 6, 5]   4
2          [1]        [9]  43

Gostaria de cada combinação única de números, para que o resultado final fosse:

   id    Job position  Job type
0   3         6.0       1.0
1   4         2.0       3.0
2   4         2.0       6.0
3   4         2.0       5.0
4   4         6.0       3.0
5   4         6.0       6.0
6   4         6.0       5.0
7  43         1.0       9.0

Porque agora eu recebo este resultado:

   id    Job position  Job type
0   3         6.0       1.0
1   4         2.0       3.0
2   4         6.0       6.0
3   4         NaN       5.0
4  43         1.0       9.0

Para obter o resultado acima, eu fiz:

df = df.set_index(['id'])
(df.apply(lambda x: pd.DataFrame(x.tolist(),index=x.index)
                        .stack()
                        .rename(x.name)).reset_index())

questionAnswers(4)

yourAnswerToTheQuestion