我在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