Если всегда верно, что df2 содержит только одну дату для каждого идентификатора, и эта дата всегда является самой ранней датой для этого идентификатора, не могли бы вы просто объединить df1 и df2, а затем отсортировать по ID и метке времени?Например:
# Generate example data
df1 = pd.DataFrame({'id': [1, 1, 2, 3, 3, 3],
'timestamp': pd.to_datetime(['2019-01-01',
'2019-01-02',
'2019-01-15',
'2019-01-17',
'2019-02-01',
'2019-02-03'])})
df2 = pd.DataFrame({'id': [1, 2, 3],
'timestamp': pd.to_datetime(['1959-06-01',
'1989-12-01',
'1999-01-25'])})
df = pd.concat([df1, df2])
df = df.sort_values(by=['id', 'timestamp']).reset_index(drop=True)
df
id timestamp
0 1 1959-06-01
1 1 2019-01-01
2 1 2019-01-02
3 2 1989-12-01
4 2 2019-01-15
5 3 1999-01-25
6 3 2019-01-17
7 3 2019-02-01
8 3 2019-02-03