使用Pandas .groupby时,为什么要使用.agg而不是直接使用.sum()函数

在Python中,要按组获取摘要,请使用groupby().agg(fx()); 例如groupby('variable').agg('sum')。那和直接使用功能有什么区别,例如;groupby('variable').sum()

慕盖茨4494581
浏览 430回答 2
2回答

12345678_0001

设置df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})使用文档的主要好处agg在docs中进行了说明:使用指定轴上的一项或多项操作进行汇总。如果需要将单独的操作应用于每个单独的列,请agg使用字典(或函数,字符串或字符串/函数列表),该字典允许您在单个语句中创建该映射。因此,如果您想要sumof的列a,以及themean的列b:df.agg({'a': 'sum', 'b': 'mean'})a    6.0b    5.0dtype: float64它还允许您在单个语句中将多个操作应用于单个列。例如,要查找sum,mean和std列a:df.agg({'a': ['sum', 'mean', 'std']})        asum   6.0mean  2.0std   1.0agg与单个操作一起使用时,结果没有差异。我认为这df.agg('sum')还不如df.sum(),但结果将是相同的:df.agg('sum')a     6b    15dtype: int64df.sum()a     6b    15dtype: int64agg提供的主要好处是应用多个操作的便利。

智慧大石

groupby('variable').agg('sum')如果只传递一个函数,使用可能会过大。通常用于汇总多个功能,例如.agg(['sum', 'mean'])。当仅传递一个函数时,结果应该是相同的,尽管在.agg()解析参数时会产生更多的开销。>>> from pandas.util import testing as tm>>> import numpy as np>>> np.random.seed(444)>>> df = tm.makeDataFrame()>>> grp = df.groupby(df['A'] > 0)>>> a = grp.agg('sum')>>> b = grp.sum()>>> tm.assert_frame_equal(a, b).agg()具有多种功能的典型用法如下:>>> grp[['A', 'C']].agg(('sum', 'mean'))               A                   C                       sum      mean       sum      meanA                                             False -16.111352 -0.805568  0.423394  0.021170True    9.435939  0.943594  4.788035  0.478803
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python