當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。