Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2022 22:51:27

shtabs-kapitan
Зарегистрирован: 2021-12-01
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор строк с максимальным значением

Помогите, пожалуйста, как выбрать строки с максимальным Значением по каждой комбинации Код и Город?
Размер датафрейма – несколько миллионов строк, поэтому скорость расчета критична.
Пример, датафрейма прикрепил.

Прикреплённый файлы:
attachment пример.xlsx (9,6 KБ)

Офлайн

#2 Авг. 18, 2022 11:46:50

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Выбор строк с максимальным значением

50 долларов



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Авг. 18, 2022 14:08:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Выбор строк с максимальным значением

  
>>> 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)]
>>>



Отредактировано py.user.next (Авг. 18, 2022 14:09:27)

Офлайн

#4 Авг. 18, 2022 17:58:46

shtabs-kapitan
Зарегистрирован: 2021-12-01
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор строк с максимальным значением

Спасибо, все получилось!
Пока не пробовал на больших данных, но надеюсь будет разумное количество времени считать.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version