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


Python pyspark Series.pandas_on_spark.transform_batch用法及代碼示例


本文簡要介紹 pyspark.pandas.Series.pandas_on_spark.transform_batch 的用法。

用法:

pandas_on_spark.transform_batch(func: Callable[[…], pandas.core.series.Series], *args: Any, **kwargs: Any) → Series

使用帶有 pandas Series 並輸出 pandas Series 的函數轉換數據。賦予函數的 pandas Series 是內部使用的批處理。

另見Transform and apply a function

注意

func 無法訪問整個輸入係列。 pandas-on-Spark 在內部將輸入係列拆分為多個批次,並在每個批次中多次調用 func。因此,諸如全局聚合之類的操作是不可能的。請參見下麵的示例。

>>> # This case does not return the length of whole frame but of the batch internally
... # used.
... def length(pser) -> ps.Series[int]:
...     return pd.Series([len(pser)] * len(pser))
...
>>> df = ps.DataFrame({'A': range(1000)})
>>> df.A.pandas_on_spark.transform_batch(length)  
    c0
0   83
1   83
2   83
...

注意

此 API 執行該函數一次以推斷可能昂貴的類型,例如,在聚合或排序後創建數據集時。

為避免這種情況,請在 func 中指定返回類型,例如,如下所示:

>>> def plus_one(x) -> ps.Series[int]:
...     return x + 1

參數

func函數

應用於每個 pandas 框架的函數。

*args

要傳遞給 func 的位置參數。

**kwargs

要傳遞給 func 的關鍵字參數。

返回

DataFrame

例子

>>> df = ps.DataFrame([(1, 2), (3, 4), (5, 6)], columns=['A', 'B'])
>>> df
   A  B
0  1  2
1  3  4
2  5  6
>>> def plus_one_func(pser) -> ps.Series[np.int64]:
...     return pser + 1
>>> df.A.pandas_on_spark.transform_batch(plus_one_func)
0    2
1    4
2    6
Name: A, dtype: int64

您也可以省略類型提示,以便 pandas-on-Spark 推斷返回模式如下:

>>> df.A.pandas_on_spark.transform_batch(lambda pser: pser + 1)
0    2
1    4
2    6
Name: A, dtype: int64

您還可以指定額外的參數。

>>> def plus_one_func(pser, a, b, c=3) -> ps.Series[np.int64]:
...     return pser + a + b + c
>>> df.A.pandas_on_spark.transform_batch(plus_one_func, 1, b=2)
0     7
1     9
2    11
Name: A, dtype: int64

您還可以使用np.ufunc 和內置函數作為輸入。

>>> df.A.pandas_on_spark.transform_batch(np.add, 10)
0    11
1    13
2    15
Name: A, dtype: int64
>>> (df * -1).A.pandas_on_spark.transform_batch(abs)
0    1
1    3
2    5
Name: A, dtype: int64

相關用法


注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.pandas.Series.pandas_on_spark.transform_batch。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。