我有一个分组数据框,我用计数聚合:
counted = df.groupby(['col1','col2']).count()
现在,算下来实际上是:
col1 col2
1 A 22
B 21
C 1
2 G 22
...
有什么方法可以计算计数值的标准/最大值,以便我得到:
col1 std
1 1.34
2 3
等等..
最佳答案
您所要做的就是在计数时调用 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
关于python - 对聚合值进行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34199872/