Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有两个分类变量的dataframe上的Groupby和count()_Python_Pandas_Pandas Groupby - Fatal编程技术网

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

Python 具有两个分类变量的dataframe上的Groupby和count(),python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个数据集,需要通过groupby()找到每个唯一组合的计数 body-style make 0 convertible alfa-romeo 1 convertible alfa-romeo 2 hatchback alfa-romeo 3 sedan audi 4 sedan audi 我需要生成如下所示的输出: make body-style count 0

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

    body-style        make
0  convertible  alfa-romeo
1  convertible  alfa-romeo
2    hatchback  alfa-romeo
3        sedan        audi
4        sedan        audi
我需要生成如下所示的输出:

             make   body-style   count
0     alfa-romero  convertible       2
1     alfa-romero    hatchback       1
2            audi    sedan           2
尝试了以下代码:

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子句中删除任何一列时,它就能够给出按剩余列分组的计数

如果我删除as_index=False,则不会有错误,但结果对象将同时包含列make和body style作为索引的一部分,并且不会有任何计数数据


我可以在datframe中添加另一列,用1s填充它,然后在groupby上取一个
sum()
,而不是
count()
。但是想知道是否有更干净的方法来实现这一点。

只有在至少有一列未用于分组的情况下,才可以使用
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

请检查我的答案,如果你把品牌和体型都添加为石斑鱼,那就没什么可计算的了。Count是一种特殊的方法,用于计算列中的非空值。你想要的可能是
.size()
这对我来说似乎是个很好的问题。它有一个可复制的例子,op的尝试,明确的问题定义,但它被否决了。有什么我遗漏了吗?你能澄清一下为什么你的解决方案有效而问题中的代码无效吗?@SashaTsukanov,当然,补充了一个简短的描述。。。