当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.core.groupby.GroupBy.apply用法及代码示例


用法:

GroupBy.apply(func, *args, **kwargs)

应用函数 func group-wise 并将结果组合在一起。

传递给apply 的函数必须将数据帧作为其第一个参数并返回数据帧、系列或标量。然后apply 将负责将结果重新组合到一个数据帧或系列中。 apply 因此是一种高度灵活的分组方法。

虽然 apply 是一种非常灵活的方法,但它的缺点是使用它可能比使用更具体的方法(如 aggtransform )慢很多。 Pandas 提供了多种方法,这些方法比使用 apply 用于特定目的要快得多,因此在达到 apply 之前尝试使用它们。

参数

func可调用的

将数据帧作为其第一个参数并返回数据帧、序列或标量的可调用对象。此外,可调用对象可以采用位置和关键字参数。

args, kwargs元组和字典

要传递给 func 的可选位置和关键字参数。

返回

appliedSeries或DataFrame

注意

改变传递对象的函数可能会产生意外行为或错误,因此不受支持。有关更多详细信息,请参阅使用用户定义函数 (UDF) 方法进行变异。

例子

>>> df = pd.DataFrame({'A':'a a b'.split(),
...                    'B':[1,2,3],
...                    'C':[4,6,5]})
>>> g = df.groupby('A')

请注意,g 有两个组,ab。通过各种方式调用apply,可以得到不同的分组结果:

示例 1:下面传递给 apply 的函数将 DataFrame 作为其参数并返回一个 DataFrame。 apply 将每个组的结果组合到一个新的 DataFrame 中:

>>> g[['B', 'C']].apply(lambda x:x / x.sum())
          B    C
0  0.333333  0.4
1  0.666667  0.6
2  1.000000  1.0

示例 2:传递给 apply 的函数将 DataFrame 作为其参数并返回一个 Series。 apply 将每个组的结果组合到一个新的 DataFrame 中。

>>> g[['B', 'C']].apply(lambda x:x.astype(float).max() - x.min())
     B    C
A
a  1.0  2.0
b  0.0  0.0

示例 3:传递给 apply 的函数将 DataFrame 作为其参数并返回一个标量。 apply 将每个组的结果组合成一个系列,包括根据需要设置索引:

>>> g.apply(lambda x:x.C.max() - x.B.min())
A
a    5
b    2
dtype:int64

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.core.groupby.GroupBy.apply。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。