在 'groupby()' 和 'value_counts() 函数之后选择每个组的第一行
Posted
技术标签:
【中文标题】在 \'groupby()\' 和 \'value_counts() 函数之后选择每个组的第一行【英文标题】:Select the first row of each group after 'groupby()' and 'value_counts() function在 'groupby()' 和 'value_counts() 函数之后选择每个组的第一行 【发布时间】:2019-07-17 06:35:02 【问题描述】:我有一个名为 new_data_set
的数据集,如下所示:
Image
我想找出每年出现次数最多的类型。
所以我这样做了:
new_data_set.groupby('release_year')['genre']).apply(lambda x: x.value_counts())`
它的结果是这样的:result
现在我需要从每个组中获取第一行以获得答案。所以结果应该是这样的:
1960 Drama
1961 Drama
.
.
我应该怎么做?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于在 'groupby()' 和 'value_counts() 函数之后选择每个组的第一行的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Pyspark 中使用 groupby 和数组元素?
在 Pandas 中使用 Keras StandardScaler 和 Groupby 函数