Помогите, пожалуйста, как выбрать строки с максимальным Значением по каждой комбинации Код и Город?
Размер датафрейма – несколько миллионов строк, поэтому скорость расчета критична.
Пример, датафрейма прикрепил.
>>> import itertools >>> >>> lst = [ ... (1101, 'Москва', 0.5), ... (1101, 'Москва', 0.2), ... (1101, 'Москва', 0.1), ... (1101, 'Владимир', 0.9), ... (1101, 'Владимир', 0.2), ... (1101, 'Владимир', 0.1), ... (1101, 'Калуга', 0.8), ... (1101, 'Калуга', 0.3), ... (1101, 'Калуга', 0.2), ... (1102, 'Москва', 1), ... (1102, 'Москва', 0.8), ... (1102, 'Иваново', 1), ... (1102, 'Иваново', 0.5), ... (1102, 'Воронеж', 0.9), ... (1102, 'Воронеж', 0.8), ... (1104, 'Липецк', 0.5), ... (1104, 'Липецк', 0.4), ... (1104, 'Липецк', 0.2), ... (1104, 'Смоленск', 0.7), ... (1104, 'Смоленск', 0.6), ... (1104, 'Смоленск', 0.3), ... (1104, 'Рязань', 0.4), ... (1104, 'Рязань', 0.3), ... (1104, 'Рязань', 0.1) ... ] >>> >>> out = [] >>> it = itertools.groupby(lst, lambda i: (i[0], i[1])) >>> for i, j in it: ... out.append(max(j)) ... >>> out [(1101, 'Москва', 0.5), (1101, 'Владимир', 0.9), (1101, 'Калуга', 0.8), (1102, 'Москва', 1), (1102, 'Иваново', 1), (1102, 'Воронеж', 0.9), (1104, 'Липецк', 0.5), (1104, 'Смоленск', 0.7), (1104, 'Рязань', 0.4)] >>>