我有一个分组数据框架,我用count进行聚合:
counted = df.groupby(['col1','col2']).count()现在,算数实际上是:
col1 col2
1 A 22
B 21
C 1
2 G 22
...是否有任何方法来计算已计算值的std/最大值,以便我得到:
col1 std
1 1.34
2 3以此类推。
发布于 2015-12-10 11:05:31
您所要做的就是在计数后调用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 22https://stackoverflow.com/questions/34199872
复制相似问题