具有两个分类变量的dataframe上的Groupby和count()

2024-06-16 10:17:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集,我需要groupby()并找到每个唯一组合的计数。在

    body-style        make
0  convertible  alfa-romeo
1  convertible  alfa-romeo
2    hatchback  alfa-romeo
3        sedan        audi
4        sedan        audi

我需要生成如下所示的输出:

^{pr2}$

尝试了以下代码:

body = pd.DataFrame({'make':['alfa-romeo','alfa-romeo','alfa-romeo','audi','audi'], 'body-style':['convertible','convertible','hatchback','sedan','sedan']})

body.groupby(by=['make','body-style'], as_index=False).count()

此聚合引发“列表索引超出范围”错误。但是,当我从groupby子句中删除任何一列时,它可以给我按剩余列分组的计数。在

如果我将作为_index=False删除,则没有错误,但结果对象将同时具有列-makebody style作为索引的一部分,并且不会有任何计数数据。在

我可以向datframe添加另一列,用1填充它,并在groupby上使用sum()而不是{}。但想知道有没有更干净的方法来做这件事。在


Tags: 数据falseindexmakestyle错误body计数
1条回答
网友
1楼 · 发布于 2024-06-16 10:17:18

只有至少有一列尚未用于分组时,才能使用GroupBy.count()。在

如果您按DF中的所有列分组-请改用.size()

In [119]: body.groupby(['make','body-style']).size().reset_index(name='count')
Out[119]:
         make   body-style  count
0  alfa-romeo  convertible      2
1  alfa-romeo    hatchback      1
2        audi        sedan      2

相关问题 更多 >