merge_asof. ( B) :
DataFrame DataFrame, 'on' . DataFrames .
,
dfa['StartTime'] = pd.to_datetime(dfa.StartTime)
dfa['EndTime'] = pd.to_datetime(dfa.EndTime)
dfb['Timestamp'] = pd.to_datetime(dfb.Timestamp)
dfb = dfb.sort_values('Timestamp')
dfa = dfa.sort_values('StartTime')
Perfom asof merge by 'Name'
pd.merge_asof(dfb, dfa, left_on='Timestamp', right_on='StartTime', by='Name')
Name Timestamp Id StartTime EndTime
0 Car3 2016-01-01 00:01:04 345 2016-01-01 00:01:00 2016-01-01 00:47:05
1 Car1 2016-01-01 00:05:00 201 2016-01-01 00:00:00 2016-01-01 00:43:05
2 Car1 2016-01-01 00:05:24 201 2016-01-01 00:00:00 2016-01-01 00:43:05
3 Car1 2016-01-01 00:05:54 201 2016-01-01 00:00:00 2016-01-01 00:43:05
4 Car2 2016-01-01 00:10:04 205 2016-01-01 00:10:00 2016-01-01 00:45:05
5 Car2 2016-01-01 00:10:34 205 2016-01-01 00:10:00 2016-01-01 00:45:05