Выберите первую строку каждой группы после функции 'groupby ()' и 'value_counts () - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть набор данных с именем new_data_set, который выглядит следующим образом:

Изображение

Я хочу найти жанр, который встречается максимальное количество раз для каждогогод.

Итак, я сделал это:

new_data_set.groupby('release_year')['genre']).apply(lambda x: x.value_counts())`

И результат выглядит так: результат

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

1960 Drama
1961 Drama
.
.

Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 23 февраля 2019

Добавить index[0], а затем reset_index:

new_data_set = pd.DataFrame({
         'release_year':[2004,2005,2004,2005,2005,2004],
         'genre':list('aaabbb')
})

df = (new_data_set.groupby('release_year')['genre']
                  .apply(lambda x: x.value_counts().index[0])
                  .reset_index()
                 )
print (df)
   release_year genre
0          2004     a
1          2005     b
0 голосов
/ 23 февраля 2019

Для вентиляторов одной линии:

df = new_data_set.mode()
df

    release_year    genre
0   2004            a
1   2005            b
0 голосов
/ 23 февраля 2019

Множество решений, достаточно добавить головку функции:

result = (new_data_set.groupby('release_year')['genre']
                    .apply(lambda x: x.value_counts().head(1))
                    .reset_index())
print(result)
...