сумма из n самых больших значений в соответствии со значением столбца - PullRequest
0 голосов
/ 09 апреля 2020

фактическая головка данных Я застрял в следующей проблеме, изображение - это мой фрейм данных

Изображение - это мой фрейм данных, в котором список состояний очень длинный, который включает в себя различные штаты США в качестве индекса, а в двух других столбцах содержится информация о округах и населении переписи 2010 года.

Моя цель состоит в том, чтобы рассматривать только три наиболее густонаселенных округа для каждого штата, каковы три самых густонаселенных штата (от самой высокой до самой низкой)? Используйте CENSUS2010POP. Эта функция должна возвращать список строковых значений .

df = pd.DataFrame({'State': ['A', 'A','A','A','A','B','B','B','B','B','B','C','C','C','C','C', 'D','D', 'D', 'D'],
               'County': ['Aa', 'Ab','Ac','Ad', 'Ae', 'Ba','Ba','Bb','Bc','Bd','Be','Ca','Cb','Cc','Cd','Ce','Da','Db','Dc','Dd'],
               'Population': [25,35,45,60,12,80,45,60,20,30,14,65,87,65,13,29,45,60,75,80]})

1 Ответ

0 голосов
/ 09 апреля 2020
state_group=df.groupby(['State'])['Population'].nlargest(3).sum(level=0)
state_group_largest3=state_group.nlargest(3)

Выходные данные print (state_group), вычислите сумму 3 самых больших округов в штате:

State
A    140 # because 140=35+45+60, which are the 3 largest counties in A
B    185
C    217
D    215
Name: Population, dtype: int64

Выходные данные print (state_group_nlargest) дают вам три штата с наибольшим населением.

State
C    217
D    215
B    185
Name: Population, dtype: int64

Я думаю, что вы знаете все соответствующие функции python (в данном случае groupby, nlargest, sum, иногда вам просто нужно применить их логическим способом:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...