Найти максимум и группу для набора данных? - PullRequest
0 голосов
/ 13 апреля 2020

pandas фрейм данных

Вот мой pandas фрейм данных, с которым я работаю выше ... форма (1049,3)
Я начинающий, и у меня возникают некоторые трудности, пытаясь достичь своей цели, отвечая «какой жанр популярен из года в год»

1) release_year = 1960–2015 и включает несколько одинаковых лет (целые числа)
2) жанр = 20 типов (объектов)
3) без пропущенных значений

Я пробовал это, но получаю сообщение об ошибке, что я не могу использовать irow

    genre.groupby('release_year').apply(lambda genre:genre.irow(genre.value.argmax()))

В конечном итоге я хочу что-то похожее на это ... (х, у)

                  popular_genre      
    release_year    
      1960          Drama
      1961          Comedy
      1962          Action
       .
       .
      2015         Science Fiction

Так что я могу построить это используя гистограмму или линию. Возможно, мне придется разделить годы на десятилетия, если слишком уродливо составлять график с таким большим количеством значений x.

Мой первоначальный план состоит в том, чтобы сначала найти жанр с наибольшим количеством каждого года, а затем поместить его в Dataframe или сделать новый

Или я слишком много думаю, и есть ли способ обойти это, просто заговор?

Спасибо всем большое заранее :)

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете использовать groupby дважды и получить жанр с наибольшим количеством.

(
    df.groupby(by=['release_year'])
    .apply(lambda x: x.groupby('popular_genre')['count']
                      .sum().nlargest(1))
)

Если популярный_генр уникален для каждого года, вы также можете сделать:

(
    df.groupby(by='release_year', as_index=False)
    .apply(lambda x: x.sort_values('count').tail(1))
    .reset_index(drop=True)
)
...