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=pdf。v…返回pdf。分配(v=(v- - - - - -v。的意思是())/v。性病())> > >df。groupby(“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.int32和numpy.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”為當前組…返回pd。DataFrame([關鍵+(pdf。v。的意思是())))> > >df。groupby(“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…返回pd。DataFrame([關鍵+(pdf。v。總和())))> > >df。groupby(df。id,裝天花板(df。v/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 |+ - - - + - - - - - - - - - - - - - - - - - + +