pyspark.sql.GroupedData.applyInPandas

GroupedData。 applyInPandas ( 函數:PandasGroupedMapFunction,模式:聯盟(pyspark.sql.types.StructType,str] )→pyspark.sql.dataframe.DataFrame

地圖每組的電流DataFrame使用一個熊貓udf和返回結果DataFrame

函數應該pandas.DataFrame並返回另一個pandas.DataFrame。為每個組,所有列在一起作為一個傳遞pandas.DataFrame用戶函數和返回pandas.DataFrame結合在一起作為一個DataFrame

模式應該是一個StructType返回的描述模式pandas.DataFrame。返回的列標簽pandas.DataFrame必須匹配的字段名稱定義模式如果指定為字符串,或匹配位置如果不是字符串字段數據類型,例如整數指數。返回的長度pandas.DataFrame可以任意的。

參數
函數 函數

一個Python本機函數,需要pandas.DataFrame,輸出一個pandas.DataFrame

模式 pyspark.sql.types.DataType或str

的返回類型函數在PySpark。值可以是pyspark.sql.types.DataType對象或DDL-formatted類型字符串。

筆記

這個函數需要一個完整的洗牌。一組的所有數據將被加載到內存中,因此用戶應該意識到潛在的伯父風險如果數據傾斜和某些群體是裝入內存太大。

這個API是實驗性的。

例子

> > >進口熊貓作為pd> > >pyspark.sql.functions進口pandas_udf,裝天花板> > >df=火花createDataFrame(((1,1.0),(1,2.0),(2,3.0),(2,5.0),(2,10.0)),(“id”,“v”))> > >def正常化(pdf):v=pdfv返回pdf分配(v=(v- - - - - -v的意思是())/v性病())> > >dfgroupby(“id”)applyInPandas(正常化,模式=“id, v雙”)顯示()+ - - - + - - - - - - - - - - - - - - - - - - - +v | | | id+ - - - + - - - - - - - - - - - - - - - - - - - +| 1 | -0.7071067811865475 || 1 | 0.7071067811865475 || 2 | -0.8320502943378437 || 2 | -0.2773500981126146 || 2 | 1.1094003924504583 |+ - - - + - - - - - - - - - - - - - - - - - - - +

另外,用戶可以通過一個函數有兩個參數。在這種情況下,分組密鑰(s)將作為第一個參數傳遞,數據將作為第二個參數傳遞。分組密鑰(s)將被傳遞的tuple numpy數據類型,例如,numpy.int32numpy.float64。數據仍將通過傳遞pandas.DataFrame從最初的火花DataFrame包含所有列。這是非常有用的,當用戶不想硬編碼分組關鍵(s)的功能。

> > >df=火花createDataFrame(((1,1.0),(1,2.0),(2,3.0),(2,5.0),(2,10.0)),(“id”,“v”))> > >defmean_func(關鍵,pdf):#鍵是一個numpy.int64的元組,也就是價值#“id”為當前組返回pdDataFrame([關鍵+(pdfv的意思是())))> > >dfgroupby(“id”)applyInPandas(mean_func,模式=“id, v雙”)顯示()+ - - - + - - - +v | | | id+ - - - + - - - +| 1 | 1.5 || 2 | 6.0 |+ - - - + - - - +
> > >defsum_func(關鍵,pdf):#兩個numpy.int64s的關鍵是一個元組,這是價值觀#的“id”和“裝天花板(df。v/2)' for the current group返回pdDataFrame([關鍵+(pdfv總和())))> > >dfgroupby(dfid,裝天花板(dfv/2))applyInPandas(sum_func,模式=“id”,裝天花板(v / 2)的長,v雙”)顯示()+ - - - + - - - - - - - - - - - - - - - - - + +| | id裝天花板v (v / 2) | |+ - - - + - - - - - - - - - - - - - - - - - + +| 2 | 5 | 10.0 || 1 | 1 | 3.0 || 2 | 3 | 5.0 || 2 | 2 | 3.0 |+ - - - + - - - - - - - - - - - - - - - - - + +