ИМО не имеет смысла читать полные таблицы в Pandas DFs, если вы их используете в MySQL DB - почему бы вам не использовать SQL для фильтрации и объединения ваших данных? Вам действительно нужны все строки из этих трех таблиц как Pandas DF?
Если вы хотите присоединиться к ним, вы можете сделать это сначала на стороне MySQL и загрузить результирующий набор в один DF ...
что-то подобное:
qry = 'select p.*, v.*, c.* from vehicle v join person p on v.id = p.vehicle_id join crash c on c.id = p.crash_id where <additional where clause>'
df = pd.read_sql(qry, engine)