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


Python pandas.core.groupby.DataFrameGroupBy.transform用法及代码示例


用法:

DataFrameGroupBy.transform(func, *args, engine=None, engine_kwargs=None, **kwargs)

调用函数在每个组上生成一个like-indexed DataFrame,并返回一个与填充了转换值的原始对象具有相同索引的 DataFrame。

参数

f函数

适用于每个组的函数。

还可以接受指定了engine='numba' 的 Numba JIT 函数。

如果选择'numba' 引擎,该函数必须是用户定义的函数,函数签名中的第一个和第二个参数分别是valuesindex。每个组的索引将传递给用户定义的函数,并且可以选择使用。

*args

要传递给 func 的位置参数。

enginestr,默认无
  • 'cython' :通过 cython 的 C-extensions 运行函数。

  • 'numba' :通过 numba 中的 JIT 编译代码运行函数。

  • None :默认为 'cython' 或全局设置 compute.use_numba

engine_kwargs字典,默认无
  • 对于'cython' 引擎,没有接受的engine_kwargs

  • 对于 'numba' 引擎,引擎可以接受 nopythonnogilparallel 字典键。这些值必须是 TrueFalse'numba' 引擎的默认 engine_kwargs{'nopython':True, 'nogil':False, 'parallel':False} 并将应用于函数

**kwargs

要传递给 func 的关键字参数。

返回

DataFrame

注意

每个组都被赋予属性‘name’,以防你需要知道你在哪个组工作。

当前的实现对 f 提出了三个要求:

  • f 必须返回一个与输入子帧具有相同形状或可以广播到输入子帧形状的值。例如,如果f 返回一个标量,它将被广播为与输入子帧具有相同的形状。

  • 如果这是一个 DataFrame,f 必须支持子帧中的应用程序column-by-column。如果 f 还支持对整个子帧的应用,则从第二个块开始使用快速路径。

  • f 不能改变组。不支持突变,可能会产生意想不到的结果。有关更多详细信息,请参阅使用用户定义函数 (UDF) 方法进行变异。

使用 engine='numba' 时,内部不会有 “fall back” 行为。组数据和组索引将作为 numpy 数组传递给 JITed 用户定义函数,并且不会尝试替代执行尝试。

例子

>>> df = pd.DataFrame({'A':['foo', 'bar', 'foo', 'bar',
...                           'foo', 'bar'],
...                    'B':['one', 'one', 'two', 'three',
...                           'two', 'two'],
...                    'C':[1, 5, 5, 2, 5, 5],
...                    'D':[2.0, 5., 8., 1., 2., 9.]})
>>> grouped = df.groupby('A')
>>> grouped.transform(lambda x:(x - x.mean()) / x.std())
          C         D
0 -1.154701 -0.577350
1  0.577350  0.000000
2  0.577350  1.154701
3 -1.154701 -1.000000
4  0.577350 -0.577350
5  0.577350  1.000000

转播结果

>>> grouped.transform(lambda x:x.max() - x.min())
   C    D
0  4  6.0
1  3  8.0
2  4  6.0
3  3  8.0
4  4  6.0
5  3  8.0
>>> grouped[['C', 'D']].transform(lambda x:x.astype(int).max())
   C  D
0  5  8
1  5  9
2  5  8
3  5  9
4  5  8
5  5  9

相关用法


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