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