聚合值的聚合

时间:2015-12-10 10:46:39

标签: python pandas

我有一个分组数据框,我用count聚合:

counted = df.groupby(['col1','col2']).count()

现在,计算实际上是:

col1  col2
1     A    22
      B    21
      C    1
2     G    22
...

有没有办法计算计算值的std / max,以便得到:

col1  std
1     1.34
2      3

等等..

1 个答案:

答案 0 :(得分:1)

你所要做的就是在count上调用groupby(),但是不提供参数'by',而是提供参数level = 0。这将返回另一个DataFrameGroupBy对象,该对象分组在索引的第一级(此处为col1)。

然后你可以做你喜欢的聚合。这是我的例子:

#set up a dataframe as in hte provided example
df=pd.DataFrame([[1,'A',22],[1,'B',21],[1,'C',1]],columns=['col1','col2','col3'])
#get the indeces to match the example
counted= df.set_index(['col1','col2'],drop=True,inplace=False)

为简单起见,我制作的df只是模仿你的第一组:

>>> counted
8:            col3
col1 col2      
1    A       22
     B       21
     C        1

再次执行groupby操作,然后进行聚合:

>>> counted.groupby(level=0).std()
9:            col3
col1           
1     11.846237
>>> counted.groupby(level=0).max()
10:       col3
col1      
1       22