Используя приведенные ниже кадры данных:
df1= pd.DataFrame({'A': [1, 2, 3],
'B': ['2019-01-01 10:00:00', '2019-01-02 12:20:00', '2019-01-01 10:00:00'],
'C': ['ID1', 'ID2', 'ID3']})
df2= pd.DataFrame({'D': ['D1', 'D2', 'D3'],
'E': ['2019-01-01 10:00:59', '2019-01-02 12:21:20', '2019-01-01 09:59:30'],
'F': ['ID1', 'ID2', 'ID3']})
Если я правильно понял ваше условие для правильного объединения двух наборов данных, приведенный ниже код выполняет эту задачу:
df = pd.merge(df1, df2, left_on='C', right_on='F', how='inner')
df['B'] = pd.to_datetime(df['B']) # Ensure it's datetime
df['E'] = pd.to_datetime(df['E']) # Ensure it's datetime
df['delta']=abs(df['B'] - df['E'])/np.timedelta64(1,'m') # Find the abs diff in minutes
df.query("delta<1").drop(columns='delta')
Вывод объединенного кадра данных, содержащего ID1 и ID3.
Вероятно, это не идеальное решение, поскольку, возможно, он может быть сделан в одной строке кода кем-то более опытным.