Как объединить два фрейма данных с разными значениями по времени?

Как правильно объединить два фрейма данных?

В одном значений меньше, чем во втором. При этом есть миллисекунды и на одни и теже миллисекунды может приходится несколько больше или меньше значений Score.

Просто merge не подходит. Как правильно поступить?

        Date    Time    Score
7   20200611    100000  41.15
8   20200611    100000  41.15
9   20200611    100000  41.15
10  20200611    100000  41.15
11  20200611    100001  41.14
12  20200611    100001  41.13
13  20200611    100001  41.12
14  20200611    100001  41.12
15  20200611    100001  41.11
16  20200611    100001  41.11
17  20200611    100001  41.11
[...]
288 20200611    100000  40.5
289 20200611    100000  40.5
290 20200611    100000  40.5
291 20200611    100000  40.5
292 20200611    100000  40.5
293 20200611    100000  40.5
294 20200611    100000  40.48
295 20200611    100001  40.47
296 20200611    100001  40.46
297 20200611    100001  40.45
298 20200611    100001  40.45
299 20200611    100001  40.45
300 20200611    100001  40.45

В итоге должно получится по всей видимости:

7   20200611    100000  41.15  40.5
8   20200611    100000  41.15  40.5
9   20200611    100000  41.15  40.5
10  20200611    100000  41.15  40.48
11  20200611    100001  41.14  40.47
12  20200611    100001  41.13  40.46
13  20200611    100001  41.12  40.45
14  20200611    100001  41.12  40.45
15  20200611    100001  41.11  40.45
16  20200611    100001  41.11  40.45

Ответы (1 шт):

Автор решения: MaxU

Попробуйте так:

res = (d1
       .assign(x=d1.groupby(["Date", "Time"])["Score"].cumcount())
       .merge(d2
              .rename(columns={"Score":"Score2"})
              .assign(x=d2.groupby(["Date", "Time"])["Score"].cumcount()))
       .drop(columns="x"))

результат:

In [69]: res
Out[69]:
       Date    Time  Score  Score2
0  20200611  100000  41.15   40.50
1  20200611  100000  41.15   40.50
2  20200611  100000  41.15   40.50
3  20200611  100000  41.15   40.50
4  20200611  100001  41.14   40.47
5  20200611  100001  41.13   40.46
6  20200611  100001  41.12   40.45
7  20200611  100001  41.12   40.45
8  20200611  100001  41.11   40.45
9  20200611  100001  41.11   40.45
→ Ссылка