Implementação vetorizada para criar várias linhas a partir de uma única linha no dataframe do pandas

Para cada linha na tabela de entrada, preciso gerar várias linhas, separando o período com base em mensalmente. (consulte a saída de amostra abaixo).

Existe uma abordagem iterativa simples para converter linha por linha, mas é muito lenta em grandes quadros de dados.

Alguém poderia sugerir uma abordagem vetorizada, como usar apply (), map () etc. para alcançar o objetivo?

A tabela de saída é uma nova tabela.

Entrada:

ID, START_DATE, END_DATE
1, 2010-12-08, 2011-03-01
2, 2010-12-10, 2011-01-12
3, 2010-12-16, 2011-03-07

Resultado:

ID, START_DATE, END_DATE, NUMBER_DAYS, ACTION_DATE
1, 2010-12-08, 2010-12-31, 23, 201012
1, 2010-12-08, 2011-01-31, 54, 201101
1, 2010-12-08, 2011-02-28, 82, 201102
1, 2010-12-08, 2011-03-01, 83, 201103
2, 2010-12-10, 2010-12-31, 21, 201012
2, 2010-12-10, 2011-01-12, 33, 201101
3, 2010-12-16, 2010-12-31, 15, 201012
4, 2010-12-16, 2011-01-31, 46, 201101
5, 2010-12-16, 2011-02-28, 74, 201102
6, 2010-12-16, 2011-03-07, 81, 201103