用法:
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
相关用法
- Python cudf.DataFrame.apply_rows用法及代码示例
- Python cudf.DataFrame.apply_chunks用法及代码示例
- Python cudf.DataFrame.append用法及代码示例
- Python cudf.DataFrame.all用法及代码示例
- Python cudf.DataFrame.add用法及代码示例
- Python cudf.DataFrame.asin用法及代码示例
- Python cudf.DataFrame.abs用法及代码示例
- Python cudf.DataFrame.atan用法及代码示例
- Python cudf.DataFrame.acos用法及代码示例
- Python cudf.DataFrame.astype用法及代码示例
- Python cudf.DataFrame.any用法及代码示例
- Python cudf.DataFrame.assign用法及代码示例
- Python cudf.DataFrame.argsort用法及代码示例
- Python cudf.DataFrame.mod用法及代码示例
- Python cudf.DataFrame.isin用法及代码示例
- Python cudf.DataFrame.rmul用法及代码示例
- Python cudf.DataFrame.exp用法及代码示例
- Python cudf.DataFrame.drop用法及代码示例
- Python cudf.DataFrame.where用法及代码示例
- Python cudf.DataFrame.median用法及代码示例
注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cudf.DataFrame.apply。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。