Использование merge_asof
:
df1['Timestamp'] = pd.to_datetime(df1['Timestamp'])
df2['Timestamp'] = pd.to_datetime(df2['Timestamp'])
df = pd.merge_asof(df2, df1, on='Timestamp')
print (df)
Timestamp stuff data
0 2019-04-02 11:00:14 101 111
1 2019-04-02 11:00:15 202 222
2 2019-04-02 11:00:16 303 222
3 2019-04-02 11:00:30 404 444
Также возможно изменить порядок df1
с помощью df2
и добавить параметр direction='forward'
:
df = pd.merge_asof(df1, df2, on='Timestamp', direction='forward')
print (df)
Timestamp data stuff
0 2019-04-02 11:00:01 111 101.0
1 2019-04-02 11:00:15 222 202.0
2 2019-04-02 11:00:29 333 404.0
3 2019-04-02 11:00:30 444 404.0
4 2019-04-02 11:00:31 505 NaN
#default direction='backward'
df = pd.merge_asof(df1, df2, on='Timestamp')
print (df)
Timestamp data stuff
0 2019-04-02 11:00:01 111 NaN
1 2019-04-02 11:00:15 222 202.0
2 2019-04-02 11:00:29 333 303.0
3 2019-04-02 11:00:30 444 404.0
4 2019-04-02 11:00:31 505 404.0