Python 基于聚合值的聚合
我有一个分组的数据帧,我使用count进行聚合:Python 基于聚合值的聚合,python,pandas,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 以此类推..您所要做的就是在counted上调用groupby(),但不是提
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
以此类推..您所要做的就是在counted上调用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
当您要求std/max时,您要求的是什么级别?索引级别0还是1?您可以使用
agg
,再次进行分组并传递函数的指令: