Сначала сравните df1.YearDeci с df2.YearDeci по принципу "каждый с каждым". Для сравнения используйте функцию np.isclose с предполагаемым абсолютным допуском.
В результате получается массив boolean :
- первый индекс- индекс в df1 ,
- второй индекс - индекс в df2 .
Затем, используя np.argwhere , найдите индексы True значений, т.е. индексы "коррелированных" строк из df1 и df2 и создайте из них DateFrame.
Код для выполнения вышеуказанных операций:
ind = pd.DataFrame(np.argwhere(np.isclose(df1.YearDeci[:, np.newaxis],
df2.YearDeci[np.newaxis, :], atol=0.0001, rtol=0)),
columns=['ind1', 'ind2'])
Затем, имея пары индексов, указывающих на «коррелированные» строки в обоих кадрах данных, выполните следующее объединение:
result = ind.merge(df1, left_on='ind1', right_index=True)\
.merge(df2, left_on='ind2', right_index=True, suffixes=['_1', '_2'])
Окончательноенеобходимо удалить оба «столбца вспомогательного индекса» ( ind1 и ind2 ):
result.drop(columns=['ind1', 'ind2'], inplace=True)
Результат (разделенный на 2 части):
YearDeci_1 Year_1 Month_1 Day_1 Magnitude Lat_1 Lon_1 YearDeci_2 \
0 1720.535519 1720 7 15 6.5 28.37 77.09 1720.535519
Year_2 Month_2 Day_2 Hour Seconds Mb Lat_2 Lon_2
0 1720 7 15 0 0 NaN 28.7 77.2