Итак, у меня есть такой df:
ID fruit
001 grapes
002 apples
002 mangos
003 bananas
004 oranges
004 grapes
И я хочу присоединиться к этому:
ID store_time
001 2021-04-02 03:02:00.321
002 2021-04-02 02:02:00.319
002 2021-04-03 12:02:00.319
002 2021-04-04 13:02:00.312
003 2021-04-02 19:02:00.313
004 2021-04-02 15:02:00.122
004 2021-04-01 11:02:00.121
Итак, все, что я хочу сделать, это присоединиться только к самой последней временной метке. Так что оставьте остальных позади и оставьте только то количество строк, которое есть во фрукте df.
Конечный результат:
ID fruit timestamp
001 grapes 2021-04-02 03:02:00.321
002 apples 2021-04-04 13:02:00.312
002 mangos 2021-04-04 13:02:00.312
003 bananas 2021-04-02 19:02:00.313
004 oranges 2021-04-02 15:02:00.122
004 grapes 2021-04-02 15:02:00.122






Агрегируйте во 2-й таблице, чтобы получить самый последний store_time для каждого ID, а затем присоединитесь к 1-й таблице:
SELECT t1.ID, t1.fruit, t2.timestamp
FROM table1 t1
LEFT JOIN (
SELECT ID, MAX(store_time) timestamp
FROM table2
GROUP BY ID
) t2 ON t2.ID = t1.ID
Я использовал соединение LEFT на тот случай, если table2 не содержит всех ID из table1.
Если это не так, вы можете изменить его на соединение INNER.
вам нужен подзапрос для максимальной отметки времени
select a.id, a.fruit, b.max_time
from my_table_fruit a
inner join (
select id, max(store_time) max_time
from my_table_time
) b on b.id = a.id