pyspark.pandas.groupby.GroupBy.transform
的用法。用法:
GroupBy.transform(func: Callable[[…], pandas.core.series.Series], *args: Any, **kwargs: Any) → FrameLike
將函數 column-by-column 應用於 GroupBy 對象。
傳遞給
transform
的函數必須將係列作為其第一個參數並返回係列。對每個分組數據中的每個係列執行給定的函數。雖然
transform
是一種非常靈活的方法,但它的缺點是使用它可能比使用更具體的方法(如agg
或transform
)慢很多。 pandas-on-Spark 提供了廣泛的方法,這些方法比使用transform
用於特定目的要快得多,因此在達到transform
之前嘗試使用它們。注意
- 此 API 執行一次函數以推斷類型
例如,在聚合或排序之後創建數據集時,可能會很昂貴。
為避免這種情況,請在
func
中指定返回類型,例如,如下所示:>>> def convert_to_string(x) -> ps.Series[str]: ... return x.apply("a string {}".format)
當給定函數注釋了返回類型時,GroupBy 對象的原始索引將丟失,並且默認索引將附加到結果中。請謹慎配置默認索引。另請參閱Default Index Type。
注意
func
中的係列實際上是 Pandas 係列。因此,允許在此函數中使用任何 pandas API。- func:可調用的
以 Series 作為其第一個參數並返回 Series 的可調用對象。
- *args:
要傳遞給 func 的位置參數。
- **kwargs:
要傳遞給 func 的關鍵字參數。
- applied:DataFrame
參數:
返回:
例子:
>>> df = ps.DataFrame({'A': [0, 0, 1], ... 'B': [1, 2, 3], ... 'C': [4, 6, 5]}, columns=['A', 'B', 'C'])
>>> g = df.groupby('A')
請注意,
g
有兩個組,0
和1
。以各種方式調用transform
,我們可以得到不同的分組結果: 下麵傳遞給transform
的函數以一個Series作為其參數並返回一個Series。transform
將函數應用於每個分組數據中的每個係列,並將它們組合成一個新的DataFrame:>>> def convert_to_string(x) -> ps.Series[str]: ... return x.apply("a string {}".format) >>> g.transform(convert_to_string) B C 0 a string 1 a string 4 1 a string 2 a string 6 2 a string 3 a string 5
>>> def plus_max(x) -> ps.Series[np.int]: ... return x + x.max() >>> g.transform(plus_max) B C 0 3 10 1 4 12 2 6 10
您可以省略類型提示並讓pandas-on-Spark 推斷其類型。
>>> def plus_min(x): ... return x + x.min() >>> g.transform(plus_min) B C 0 2 8 1 3 10 2 6 10
在係列的情況下,它的工作原理如下。
>>> df.B.groupby(df.A).transform(plus_max) 0 3 1 4 2 6 Name: B, dtype: int64
>>> (df * -1).B.groupby(df.A).transform(abs) 0 1 1 2 2 3 Name: B, dtype: int64
您還可以指定要傳遞給函數的額外參數。
>>> def calculation(x, y, z) -> ps.Series[np.int]: ... return x + x.min() + y + z >>> g.transform(calculation, 5, z=20) B C 0 27 33 1 28 35 2 31 35
相關用法
- Python pyspark GroupBy.tail用法及代碼示例
- Python pyspark GroupBy.mean用法及代碼示例
- Python pyspark GroupBy.head用法及代碼示例
- Python pyspark GroupBy.cumsum用法及代碼示例
- Python pyspark GroupBy.rank用法及代碼示例
- Python pyspark GroupBy.bfill用法及代碼示例
- Python pyspark GroupBy.cummin用法及代碼示例
- Python pyspark GroupBy.cummax用法及代碼示例
- Python pyspark GroupBy.fillna用法及代碼示例
- Python pyspark GroupBy.apply用法及代碼示例
- Python pyspark GroupBy.diff用法及代碼示例
- Python pyspark GroupBy.filter用法及代碼示例
- Python pyspark GroupBy.cumcount用法及代碼示例
- Python pyspark GroupBy.idxmax用法及代碼示例
- Python pyspark GroupBy.shift用法及代碼示例
- Python pyspark GroupBy.idxmin用法及代碼示例
- Python pyspark GroupBy.nunique用法及代碼示例
- Python pyspark GroupBy.median用法及代碼示例
- Python pyspark GroupBy.size用法及代碼示例
- Python pyspark GroupBy.any用法及代碼示例
- Python pyspark GroupBy.all用法及代碼示例
- Python pyspark GroupBy.get_group用法及代碼示例
- Python pyspark GroupBy.ffill用法及代碼示例
- Python pyspark GroupBy.backfill用法及代碼示例
- Python pyspark GroupBy.cumprod用法及代碼示例
注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.pandas.groupby.GroupBy.transform。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。