Уж не знаю, может быть тогда и не грузить всю таблицу целиком, а сразу изначально искать нужные строки по критерию поиска силами пандаса, а потом выдавать результат? Вообщем-то вся таблица то и не нужна как бы.Ну вообще то я думал ты так и делаешь. Какой тебе смысл во всей таблице в выводе. Вывод это подсет фрейма.
for i in range(len(name)):
counter = 0
for c in range(len(name[i])):
В чем проблема запустить этот код. На некой категориальной переменной он выберет подсет с самыми большими датами по каждой группе. Я создал временную колонку latest последняя дата, затем сгрупировал затем трансформировал ее методом series, nlargest и оставил самую последнюю дату например мог оставить 2-3 да сколько угодно. Затем выбрал этот подсет, если временная колонка latest не нужна то ее можно дропнуть в конце. Я в целом принцип показал. вместо pd.Series.nalrgest можешь использовать приблизительно тысячу других функций или написать свою.