Preencha os dados de pandas ausentes com o valor anterior ausente, agrupados por chave

Eu estou lidando com pandas DataFrames como este:

   id    x
0   1   10
1   1   20
2   2  100
3   2  200
4   1  NaN
5   2  NaN
6   1  300
7   1  NaN

Eu gostaria de substituir cada NAN 'x' pelo anterior non-NAN 'x' de uma linha com o mesmo valor 'id':

   id    x
0   1   10
1   1   20
2   2  100
3   2  200
4   1   20
5   2  200
6   1  300
7   1  300

Existe alguma maneira engenhosa de fazer isso sem passar manualmente pelas linhas?

questionAnswers(2)

yourAnswerToTheQuestion