итерация в pandas.groupby - PullRequest
       24

итерация в pandas.groupby

0 голосов
/ 20 апреля 2019

У меня есть этот фрейм данных, который имеет три поля: 'location', 'sex' и 'category'.

Местоположение поля имеет значение от 1 до 1000. Поле sex имеет значение либо'm' или 'f' Категория поля имеет значение от 1 до 600. Мне нужно количество элементов для каждого местоположения, каждого пола для списка значений категории, скажем [5,35,64,100, 216]

Я пыталсячто-то вроде:

result5=df.loc[(df.sex=='M')&(df.category==5)].groupby(['location','category'])count()

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

Я также пробовал что-то вроде:

for i in [5,35,64,100, 216]:
    if i=5:
       result5=df.loc[(df.sex=='M')&(df.category==i)].groupby(['location','category'])count()

и т. Д.Это также кажется очень повторяющимся.

Не могли бы вы помочь мне с простым набором кодов, который может повторить процесс?большое спасибо!

1 Ответ

0 голосов
/ 20 апреля 2019

Сначала отфильтруйте данные по Series.isin, а затем агрегируйте по всем 3 столбцам с GroupBy.size:

L = [5,35,64,100, 216]
df1 = (df[df.location.isin(L)]
                .groupby(['location','sex','category'])
                .size()
                .reset_index(name='count'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...