Найти - Пользователи
Полная версия: Выбор строк с максимальным значением
Начало » Python для новичков » Выбор строк с максимальным значением
1
shtabs-kapitan
Помогите, пожалуйста, как выбрать строки с максимальным Значением по каждой комбинации Код и Город?
Размер датафрейма – несколько миллионов строк, поэтому скорость расчета критична.
Пример, датафрейма прикрепил.
ZerG
50 долларов
py.user.next
  
>>> 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)]
>>>
shtabs-kapitan
Спасибо, все получилось!
Пока не пробовал на больших данных, но надеюсь будет разумное количество времени считать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB