在“ groupby()”和“ value_counts()函数之后,选择每个组的第一行

时间:2019-02-23 07:47:04

标签: pandas jupyter-notebook data-science data-analysis

我有一个名为new_data_set的数据集,如下所示:

Image

我想找到每年最多出现次数的流派。

所以我做到了:

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

其结果如下:result

现在我需要从每个组中获取第一行以获得答案。因此结果应如下所示:

1960 Drama
1961 Drama
.
.

我应该怎么做?

3 个答案:

答案 0 :(得分:0)

很多解决方案,其中一种就是添加函数头:

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

答案 1 :(得分:0)

先添加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

答案 2 :(得分:0)

对于一线粉丝:

df = new_data_set.mode()
df

    release_year    genre
0   2004            a
1   2005            b