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


Python cudf.DataFrame.apply用法及代码示例


用法:

DataFrame.apply(func, axis=1, raw=False, result_type=None, args=(), **kwargs)

沿 DataFrame 的轴应用函数。

旨在模仿 pandas.DataFrame.apply 。在数据帧上逐行应用用户定义的函数,并进行真正的空处理。使用 core.udf.pipeline.nulludf 处理 UDF 并返回单个系列。使用 numba 通过 LLVM 将函数 jit 编译为 PTX。

参数

func函数

应用于每一行的函数。

axis{0 或 ‘index’,1 或 ‘columns’},默认 0

沿其应用函数的轴:* 0 或‘index’:将函数应用于每一列。

注意:还不支持axis=0。

  • 1 或‘columns’:将函数应用于每一行。
raw: bool, default False

尚不支持

result_type: {‘expand’, ‘reduce’, ‘broadcast’, None}, default None

尚不支持

args: tuple

除了 DataFrame 之外,还传递给 func 的位置参数。

例子

单个变量的简单函数,可能是 NA

>>> def f(row):
...     if row['a'] is cudf.NA:
...             return 0
...     else:
...             return row['a'] + 1
...
>>> df = cudf.DataFrame({'a': [1, cudf.NA, 3]})
>>> df.apply(f, axis=1)
0    2
1    0
2    4
dtype: int64

多个变量的函数将以 null 感知方式运行

>>> def f(row):
...     return row['a'] - row['b']
...
>>> df = cudf.DataFrame({
...     'a': [1, cudf.NA, 3, cudf.NA],
...     'b': [5, 6, cudf.NA, cudf.NA]
... })
>>> df.apply(f)
0      -4
1    <NA>
2    <NA>
3    <NA>
dtype: int64

函数可以有条件地返回 NA 就像在 pandas 中一样

>>> def f(row):
...     if row['a'] + row['b'] > 3:
...             return cudf.NA
...     else:
...             return row['a'] + row['b']
...
>>> df = cudf.DataFrame({
...     'a': [1, 2, 3],
...     'b': [2, 1, 1]
... })
>>> df.apply(f, axis=1)
0       3
1       3
2    <NA>
dtype: int64

允许混合类型,但将返回通用类型,而不是 pandas 中的对象

>>> def f(row):
...     return row['a'] + row['b']
...
>>> df = cudf.DataFrame({
...     'a': [1, 2, 3],
...     'b': [0.5, cudf.NA, 3.14]
... })
>>> df.apply(f, axis=1)
0     1.5
1    <NA>
2    6.14
dtype: float64

函数也可以返回标量值,但是无论数据如何,结果都将被提升为安全类型

>>> def f(row):
...     if row['a'] > 3:
...             return row['a']
...     else:
...             return 1.5
...
>>> df = cudf.DataFrame({
...     'a': [1, 3, 5]
... })
>>> df.apply(f, axis=1)
0    1.5
1    1.5
2    5.0
dtype: float64

一般支持针对 N 列的操作

>>> def f(row):
...     v, w, x, y, z = (
...         row['a'], row['b'], row['c'], row['d'], row['e']
...     )
...     return x + (y - (z / w)) % v
...
>>> df = cudf.DataFrame({
...     'a': [1, 2, 3],
...     'b': [4, 5, 6],
...     'c': [cudf.NA, 4, 4],
...     'd': [8, 7, 8],
...     'e': [7, 1, 6]
... })
>>> df.apply(f, axis=1)
0    <NA>
1     4.8
2     5.0
dtype: float64

相关用法


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