Как объединить функции .agg () и .assign () в Pandas - PullRequest
0 голосов
/ 18 марта 2020

Я хочу повторить этот запрос Dplyr в Pandas, но у меня возникли проблемы при объединении функций .agg () и .assign () вместе, и это было бы так благодарен за любой совет () часть Я перенаправляю переменную обратно в исходный фрейм данных, но больше ничего не работает

counties.\
   groupby('state').\
   agg(total_area = ('land_area', 'sum'),
       total_population = ('population', 'sum')).\
   reset_index().\
   assign(density = counties['total_population'] / counties['total_area']).\
   arrange('density', ascending = False).\
   head()

1 Ответ

1 голос
/ 18 марта 2020

Проблема в том, что вам нужно lambda для обработки связанных данных, обработка в течение дня в предыдущих цепочечных методах:

assign(density = counties['total_population'] / counties['total_area'])

to:

assign(density = lambda x: x['total_population'] / x['total_area'])

Другая проблема заключается в том, что вместо нее используется сортировка :

arrange('density', ascending = False)

метод DataFrame.sort_values:

sort_values('density', ascending = False):

Все вместе . используется для запуска таких методов, как:

df = (counties.groupby('state')
              .agg(total_area = ('land_area', 'sum'),
                   total_population = ('population', 'sum'))
              .reset_index()
              .assign(density = lambda x: x['total_population'] / x['total_area'])
              .sort_values('density', ascending = False)
              .head())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...