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


Python pyspark DataFrame.transform用法及代碼示例

本文簡要介紹 pyspark.pandas.DataFrame.transform 的用法。

用法:

DataFrame.transform(func: Callable[[…], Series], axis: Union[int, str] = 0, *args: Any, **kwargs: Any) → DataFrame

調用 func 自行生成具有轉換值的係列,並且其長度與其輸入相同。

另見Transform and apply a function

注意

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

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

>>> def square(x) -> ps.Series[np.int32]:
...     return x ** 2

pandas-on-Spark 使用返回類型提示並且不嘗試推斷類型。

注意

func中的係列實際上是多個 Pandas 係列作為整個pandas-on-Spark係列的片段;因此,不能保證每個係列的長度。例如,針對每個係列的聚合確實可以作為全局聚合,但是每個段的聚合。見下文:

>>> def func(x) -> ps.Series[np.int32]:
...     return x + sum(x)

參數

func函數

用於轉換數據的函數。當 Pandas 係列通過時它必須工作。

axisint,默認 0 或 ‘index’

目前隻能設置為0。

*args

要傳遞給 func 的位置參數。

**kwargs

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

返回

DataFrame

DataFrame 必須與 self 具有相同的長度。

拋出

Exception如果返回的 DataFrame 的長度與 self 的長度不同。

例子

>>> df = ps.DataFrame({'A': range(3), 'B': range(1, 4)}, columns=['A', 'B'])
>>> df
   A  B
0  0  1
1  1  2
2  2  3
>>> def square(x) -> ps.Series[np.int32]:
...     return x ** 2
>>> df.transform(square)
   A  B
0  0  1
1  1  4
2  4  9

您可以省略類型提示並讓pandas-on-Spark 推斷其類型。

>>> df.transform(lambda x: x ** 2)
   A  B
0  0  1
1  1  4
2  4  9

對於多索引列:

>>> df.columns = [('X', 'A'), ('X', 'B')]
>>> df.transform(square)  
   X
   A  B
0  0  1
1  1  4
2  4  9
>>> (df * -1).transform(abs)  
   X
   A  B
0  0  1
1  1  2
2  2  3

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

>>> def calculation(x, y, z) -> ps.Series[int]:
...     return x ** y + z
>>> df.transform(calculation, y=10, z=20)  
      X
      A      B
0    20     21
1    21   1044
2  1044  59069

相關用法


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