Pandas groupby самая низкая сумма

Я пытаюсь использовать groupby , nlargest и sum в Pandas вместе, но у меня проблемы с работой.

 State County Population Alabama a 100 Alabama b 50 Alabama c 40 Alabama d 5 Alabama e 1 ... Wyoming a.51 180 Wyoming b.51 150 Wyoming c.51 56 Wyoming d.51 5 

Я хочу использовать groupby для выбора по состоянию, а затем получить 2 лучших groupby по численности населения. Затем используйте только те из трех верхних номеров графства, чтобы получить сумму для этого состояния.

В конце концов, у меня будет список, в котором будет состояние и население (из его лучших 2 стран).

Я могу получить groupby и nlargest с nlargest , но получение суммы самого nlargest(2) является проблемой.

Линия, которую я имею прямо сейчас, просто: df.groupby('State')['Population'].nlargest(2)

2 Solutions collect form web for “Pandas groupby самая низкая сумма”

Вы можете использовать apply после выполнения groupby :

 df.groupby('State')['Population'].apply(lambda grp: grp.nlargest(2).sum()) 

Я думаю, что эта проблема df.groupby('State')['Population'].nlargest(2) что df.groupby('State')['Population'].nlargest(2) вернет DataFrame, так что вы больше не сможете выполнять операции на уровне группы. В общем случае, если вы хотите выполнять несколько операций в группе, вам необходимо использовать apply / agg .

Результат:

 State Alabama 150 Wyoming 330 

Используя agg , логика группировки выглядит так:

df.groupby('State').agg({'Population': {lambda x: x.nlargest(2).sum() }})

Это приводит к другому объекту dataframe; которые вы могли бы запросить, чтобы найти самые густонаселенные государства и т. д.

  Population State Alabama 150 Wyoming 330 
Interesting Posts

Использовать Python для загрузки данных в Mysql

Сортировка и группировка вложенных списков в Python

Чтение Огромного файла в Python

Регулярное выражение для возврата текста между скобками

Как найти количество аргументов функции Python?

Почему это решение терпит неудачу? Вложенные и соответствующие скобки

Как удалить все остальные элементы массива в python? (Обратный np.repeat ()?)

Django перенаправляет на пользовательский URL-адрес

Есть ли в Python клиенты Bayeux?

Какая разница между использованием перенаправления Django и HttpResponseRedirect?

Python устанавливает соединение и устанавливает пересечение работать по-разному?

Python, как декодировать двоичную кодированную десятичную (BCD)

Никаких дистрибутивов для некоторых пакетов

Производительность при передаче огромного списка в качестве аргумента в рекурсивной функции?

Является ли python uuid1 последовательным как временные метки?

Python - лучший язык программирования в мире.