我有一个分组数据框,我用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
等等..
答案 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