df = pd.DataFrame({'id': [1, 1, 2, 2, 1, 2, 1, 1], 'x': [10, 20, 100, 200,
    np.nan, np.nan, 300, np.nan]})
df['x'] = df.groupby(['id'])['x'].transform(lambda grp: grp.fillna(method=
    'ffill'))
Заполните отсутствующие данные pandas предыдущим неотсутствующим значением, сгруппированным по ключу