如何在多个索引上使用groupby,然后使用count聚合函数,然后使用多个索引中的一个得到count的和?



我在python中创建了一个数据框架,比如:

testingdf = pd.DataFrame({'A':[1,2,1,2,1,2],
'B':[1,2,1,2,3,3],
'C':[9,8,7,6,5,6]})

现在我想根据'A'和'B'获得列'C'的计数,因为我正在执行

testingdf.groupby(['A','B']).count()

:

C
A   B   
1   1   2
3   1
2   2   2
3   1

现在我想获得'C'相对于'A'的这个计数的和值,如:

A   C
1   3
2   3

将'A'和'B'分组后,可以选择'A'列并对其应用sum聚合函数。所以我想知道什么是有效的方法来做到这一点。

注**:这个和只是一个例子,我想执行不同的事情,也像聚合函数,以获得最大和最小的计数C相对于A分组后A和B。

注:对不起,我应该早点提到这一点,但我不想两次使用groupby。我想知道得到结果的最有效的方法。即使这意味着我不必使用groupby。

可以在groupby()+count()之后使用level参数的sum()方法:

out=testingdf.groupby(['A','B']).count().sum(level=0).reset_index()

的另一种方法是groupby两次:

out=testingdf.groupby(['A','B']).count().groupby(level=0).sum().reset_index()

给定数据的输出:

A   C
0   1   2
1   2   2
2   3   1

最新更新