я не самый настоящий сварщик, но 1 может попробовать разбить на более простые операции и посмотреть в каком месте самые большие тормоза? 2 попробуй вынести pd_series_unique за скобки ну в смысле чтоб оно не каждый раз по всей таблице пробегало, один раз вычисли и дальше передавай в виде переменной
А почему сначала не объединить столбцы, а потом уже to_datetime делать с форматом дата+время? А то ты сначала переводишь два отдельных столбца в datetime, потом в строку, объединяешь, потом преобразовываешь обратно в datetime?