如何通过使用pandas Groupby对同一列应用不同的聚合函数[英] How to apply different aggregation functions to same column by using pandas Groupby

本文是小编为大家收集整理的关于如何通过使用pandas Groupby对同一列应用不同的聚合函数的处理方法,想解了如何通过使用pandas Groupby对同一列应用不同的聚合函数的问题怎么解决?如何通过使用pandas Groupby对同一列应用不同的聚合函数问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

做的时候就清楚了

 data.groupby(['A','B']).mean()

我们通过级别 'A' 和 'B' 得到多索引的东西以及每个组的平均值的一列

我怎么能同时拥有 count()、std() ?

所以结果看起来像在数据框中

A   B    mean   count   std

推荐答案

以下应该可以:

data.groupby(['A','B']).agg([pd.Series.mean, pd.Series.std, pd.Series.count])

基本上调用agg 并传递函数列表将生成应用了这些函数的多个列.

例子:

In [12]:

df = pd.DataFrame({'a':np.random.randn(5), 'b':[0,0,1,1,2]})
df.groupby(['b']).agg([pd.Series.mean, pd.Series.std, pd.Series.count])
Out[12]:
          a                
       mean       std count
b                          
0 -0.769198  0.158049     2
1  0.247708  0.743606     2
2 -0.312705       NaN     1

您还可以传递方法名称的字符串,常见的可以使用,一些更晦涩的方法我不记得了,但在这种情况下它们可以正常工作,感谢@ajcr 的建议:

In [16]:
df = pd.DataFrame({'a':np.random.randn(5), 'b':[0,0,1,1,2]})
df.groupby(['b']).agg(['mean', 'std', 'count'])

Out[16]:
          a                
       mean       std count
b                          
0 -1.037301  0.790498     2
1 -0.495549  0.748858     2
2 -0.644818       NaN     1

本文地址:https://www.itbaoku.cn/post/1727928.html