I have two daframes df1 and df2
df1 is
time status
2/2/2015 8.00 am on time
2/2/2015 9.00 am canceled
2/2/2015 10.30 am
First ensure that the date columns are datetime64 columns.
df1['time'] = pd.to_datetime(df1['time'].str.replace(".", ":"))
df2['w_time'] = pd.to_datetime(df2['w_time'].str.replace(".", ":"))
If you set these as DatetimeIndex
s can then use reindex
with the 'nearest' method:
In [11]: df1 = df1.set_index("time")
In [12]: df2 = df2.set_index("w_time", drop=False)
In [13]: df1
Out[13]:
status
time
2015-02-02 08:00:00 on time
2015-02-02 09:00:00 canceled
2015-02-02 10:30:00 on time
2015-02-02 12:45:00 on time
In [14]: df2
Out[14]:
temp w_time
w_time
2015-02-02 08:00:00 45 2015-02-02 08:00:00
2015-02-02 08:50:00 46 2015-02-02 08:50:00
2015-02-02 09:40:00 47 2015-02-02 09:40:00
2015-02-02 10:15:00 47 2015-02-02 10:15:00
2015-02-02 10:35:00 48 2015-02-02 10:35:00
2015-02-02 12:00:00 48 2015-02-02 12:00:00
2015-02-02 13:00:00 49 2015-02-02 13:00:00
With the following:
In [15]: df2.reindex(df1.index, method='nearest')
Out[15]:
temp w_time
time
2015-02-02 08:00:00 45 2015-02-02 08:00:00
2015-02-02 09:00:00 46 2015-02-02 08:50:00
2015-02-02 10:30:00 48 2015-02-02 10:35:00
2015-02-02 12:45:00 49 2015-02-02 13:00:00
Then add these columns/join back to df1.