Для тех, кто ищет версию ответа Романа Пекара, которая позволяет избегать имен столбцов вручную:
column_to_explode = 'samples'
res = (df
.set_index([x for x in df.columns if x != column_to_explode])[column_to_explode]
.apply(pd.Series)
.stack()
.reset_index())
res = res.rename(columns={
res.columns[-2]:'exploded_{}_index'.format(column_to_explode),
res.columns[-1]: '{}_exploded'.format(column_to_explode)})
Закрыть. Вам нужно присоединиться к подзапросу на дату!
(SELECT patient_id, max(dispensing_date) as max_dispensing_date
FROM `v_patient_visits`
GROUP BY patient_id
) visits
ON visits.patient_visit_id = pv.patient_visit_id AND
visits.max_dispensing_date = pv.dispensing_date