【问题标题】:Select the first row of each group after 'groupby()' and 'value_counts() function在 'groupby()' 和 'value_counts() 函数之后选择每个组的第一行
【发布时间】:2023-04-02 03:46:01
【问题描述】:
我有一个名为 new_data_set 的数据集,如下所示:
Image
我想找出每年出现次数最多的类型。
所以我这样做了:
new_data_set.groupby('release_year')['genre']).apply(lambda x: x.value_counts())`
它的结果是这样的:result
现在我需要从每个组中获取第一行以获得答案。所以结果应该是这样的:
1960 Drama
1961 Drama
.
.
我应该怎么做?
【问题讨论】:
标签:
pandas
jupyter-notebook
data-science
data-analysis
【解决方案1】:
对于单线粉丝:
df = new_data_set.mode()
df
release_year genre
0 2004 a
1 2005 b
【解决方案2】:
解决方法很多,一个就是添加函数头:
result = (new_data_set.groupby('release_year')['genre']
.apply(lambda x: x.value_counts().head(1))
.reset_index())
print(result)
【解决方案3】:
添加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