pyspark.pandas.groupby.GroupBy.applygydF4y2Ba¶gydF4y2Ba

GroupBy。gydF4y2Ba 應用gydF4y2Ba (gydF4y2Ba 函數gydF4y2Ba:gydF4y2Ba可調用的gydF4y2Ba,gydF4y2Ba*gydF4y2Baarg遊戲gydF4y2Ba:gydF4y2Ba任何gydF4y2Ba,gydF4y2Ba* *gydF4y2BakwargsgydF4y2Ba:gydF4y2Ba任何gydF4y2Ba )gydF4y2Ba→聯盟gydF4y2Ba(gydF4y2Bapyspark.pandas.frame.DataFramegydF4y2Ba,gydF4y2Bapyspark.pandas.series.SeriesgydF4y2Ba]gydF4y2Ba ¶gydF4y2Ba

應用函數gydF4y2Ba函數gydF4y2Bagroup-wise和組合在一起的結果。gydF4y2Ba

函數傳遞給gydF4y2Ba應用gydF4y2Ba必須采取DataFrame作為第一個參數並返回一個DataFrame。gydF4y2Ba應用gydF4y2Ba將照顧相結合的結果返回組合進一個dataframe。gydF4y2Ba應用gydF4y2Ba因此是一個高度靈活的分組方法。gydF4y2Ba

而gydF4y2Ba應用gydF4y2Ba是一個非常靈活的方法,它的缺點是使用它可以相當慢於使用更具體的方法gydF4y2BagggydF4y2Ba或gydF4y2Ba變換gydF4y2Ba。pandas-on-Spark提供了一個廣泛的方法,將比使用快得多gydF4y2Ba應用gydF4y2Ba為他們的特定的目的,所以盡量使用他們之前gydF4y2Ba應用gydF4y2Ba。gydF4y2Ba

請注意gydF4y2Ba

這個API函數執行一次來推斷的類型可能是非常昂貴的,例如,當聚合或排序後創建的數據集。gydF4y2Ba

為了避免這種情況,指定返回類型gydF4y2Ba函數gydF4y2Ba例如,如下:gydF4y2Ba

> > >gydF4y2BadefgydF4y2Bapandas_divgydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba- >gydF4y2BapsgydF4y2Ba。gydF4y2BaDataFramegydF4y2Ba(gydF4y2BaintgydF4y2Ba,gydF4y2Ba(gydF4y2Ba浮動gydF4y2Ba,gydF4y2Ba浮動gydF4y2Ba]:gydF4y2Ba…gydF4y2Ba返回gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba/gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba

如果指定返回類型,輸出列名稱gydF4y2Bac0, c1, c2…cngydF4y2Ba。這些名稱映射到返回DataFrame按位置gydF4y2Ba函數gydF4y2Ba。gydF4y2Ba

指定列的名稱,您可以指定在NumPy複合類型樣式如下:gydF4y2Ba

> > >gydF4y2BadefgydF4y2Bapandas_divgydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba- >gydF4y2BapsgydF4y2Ba。gydF4y2BaDataFramegydF4y2Ba((gydF4y2Ba“指數”gydF4y2Ba,gydF4y2BaintgydF4y2Ba),gydF4y2Ba((gydF4y2Ba“一個”gydF4y2Ba,gydF4y2Ba浮動gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“b”gydF4y2Ba,gydF4y2Ba浮動gydF4y2Ba)]]:gydF4y2Ba…gydF4y2Ba返回gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba/gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba
> > >gydF4y2BapdfgydF4y2Ba=gydF4y2BapdgydF4y2Ba。gydF4y2BaDataFramegydF4y2Ba({gydF4y2Ba“B”gydF4y2Ba:gydF4y2Ba(gydF4y2Ba1。gydF4y2Ba),gydF4y2Ba“C”gydF4y2Ba:gydF4y2Ba(gydF4y2Ba3所示。gydF4y2Ba]})gydF4y2Ba> > >gydF4y2BadefgydF4y2Baplus_onegydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba- >gydF4y2BapsgydF4y2Ba。gydF4y2BaDataFramegydF4y2Ba(gydF4y2Ba…gydF4y2Ba(gydF4y2BapdfgydF4y2Ba。gydF4y2Ba指數gydF4y2Ba。gydF4y2Ba的名字gydF4y2Ba,gydF4y2BapdfgydF4y2Ba。gydF4y2Ba指數gydF4y2Ba。gydF4y2BadtypegydF4y2Ba),gydF4y2Ba郵政編碼gydF4y2Ba(gydF4y2BapdfgydF4y2Ba。gydF4y2Ba列gydF4y2Ba,gydF4y2BapdfgydF4y2Ba。gydF4y2BadtypesgydF4y2Ba):gydF4y2Ba…gydF4y2Ba返回gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba/gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba

請注意gydF4y2Ba

內dataframegydF4y2Ba函數gydF4y2Ba實際上是一個熊貓dataframe。因此,任何熊貓API在這個函數是允許的。gydF4y2Ba

參數gydF4y2Ba
函數gydF4y2Ba 可調用的gydF4y2Ba

一個可調用,DataFrame作為它的第一個參數,並返回一個DataFrame。gydF4y2Ba

* argsgydF4y2Ba

位置參數傳遞給函數。gydF4y2Ba

* * kwargsgydF4y2Ba

關鍵字參數傳遞給函數。gydF4y2Ba

返回gydF4y2Ba
應用gydF4y2Ba DataFrame或係列gydF4y2Ba

另請參閱gydF4y2Ba

總gydF4y2Ba

聚合函數應用於GroupBy對象。gydF4y2Ba

DataFrame.applygydF4y2Ba

應用一個函數DataFrame。gydF4y2Ba

Series.applygydF4y2Ba

應用一係列的函數。gydF4y2Ba

例子gydF4y2Ba

> > >gydF4y2BadfgydF4y2Ba=gydF4y2BapsgydF4y2Ba。gydF4y2BaDataFramegydF4y2Ba({gydF4y2Ba“一個”gydF4y2Ba:gydF4y2Ba“b”gydF4y2Ba。gydF4y2Ba分裂gydF4y2Ba(),gydF4y2Ba…gydF4y2Ba“B”gydF4y2Ba:gydF4y2Ba(gydF4y2Ba1gydF4y2Ba,gydF4y2Ba2gydF4y2Ba,gydF4y2Ba3gydF4y2Ba),gydF4y2Ba…gydF4y2Ba“C”gydF4y2Ba:gydF4y2Ba(gydF4y2Ba4gydF4y2Ba,gydF4y2Ba6gydF4y2Ba,gydF4y2Ba5gydF4y2Ba)},gydF4y2Ba列gydF4y2Ba=gydF4y2Ba(gydF4y2Ba“一個”gydF4y2Ba,gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba])gydF4y2Ba> > >gydF4y2BaggydF4y2Ba=gydF4y2BadfgydF4y2Ba。gydF4y2BagroupbygydF4y2Ba(gydF4y2Ba“一個”gydF4y2Ba)gydF4y2Ba

請注意,gydF4y2BaggydF4y2Ba有兩個組,gydF4y2Ba一個gydF4y2Ba和gydF4y2BabgydF4y2Ba。調用gydF4y2Ba應用gydF4y2Ba以不同的方式,我們可以得到不同的分組結果:gydF4y2Ba

在傳遞給函數gydF4y2Ba應用gydF4y2Ba需要DataFrame作為它的參數,並返回一個DataFrame。gydF4y2Ba應用gydF4y2Ba結合結果為每個組在一起成一個新的DataFrame:gydF4y2Ba

> > >gydF4y2BadefgydF4y2Baplus_mingydF4y2Ba(gydF4y2BaxgydF4y2Ba):gydF4y2Ba…gydF4y2Ba返回gydF4y2BaxgydF4y2Ba+gydF4y2BaxgydF4y2Ba。gydF4y2Ba最小值gydF4y2Ba()gydF4y2Ba> > >gydF4y2BaggydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2Baplus_mingydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2BaA B CgydF4y2Ba0 aa 2 8gydF4y2Ba1 aa 3 10gydF4y2Ba2 bb 6 10gydF4y2Ba
> > >gydF4y2BaggydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2Ba總和gydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2BaA B CgydF4y2Ba一個gydF4y2Baaa 3 10gydF4y2Bab b 3 5gydF4y2Ba
> > >gydF4y2BaggydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2BalengydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2Ba一個gydF4y2Ba一個2gydF4y2Bab 1gydF4y2Badtype: int64gydF4y2Ba

您可以指定類型提示,防止模式推理的更好的性能。gydF4y2Ba

> > >gydF4y2BadefgydF4y2Bapandas_divgydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba- >gydF4y2BapsgydF4y2Ba。gydF4y2BaDataFramegydF4y2Ba(gydF4y2BaintgydF4y2Ba,gydF4y2Ba(gydF4y2Ba浮動gydF4y2Ba,gydF4y2Ba浮動gydF4y2Ba]:gydF4y2Ba…gydF4y2Ba返回gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba/gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba> > >gydF4y2BaggydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2Bapandas_divgydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2Bac0 c1gydF4y2Ba0 1.0 1.0gydF4y2Ba1)1.0 - 1.0gydF4y2Ba2 1.0 - 1.0gydF4y2Ba
> > >gydF4y2BadefgydF4y2Bapandas_divgydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba- >gydF4y2BapsgydF4y2Ba。gydF4y2BaDataFramegydF4y2Ba((gydF4y2Ba“指數”gydF4y2Ba,gydF4y2BaintgydF4y2Ba),gydF4y2Ba((gydF4y2Ba“f1”gydF4y2Ba,gydF4y2Ba浮動gydF4y2Ba),gydF4y2Ba(gydF4y2Ba“f2”gydF4y2Ba,gydF4y2Ba浮動gydF4y2Ba)]]:gydF4y2Ba…gydF4y2Ba返回gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba/gydF4y2BaxgydF4y2Ba[[gydF4y2Ba“B”gydF4y2Ba,gydF4y2Ba“C”gydF4y2Ba]]gydF4y2Ba> > >gydF4y2BaggydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2Bapandas_divgydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2Baf1 f2gydF4y2Ba指數gydF4y2Ba0 1.0 1.0gydF4y2Ba1)1.0 - 1.0gydF4y2Ba2 1.0 - 1.0gydF4y2Ba

係列,它的工作原理如下。gydF4y2Ba

> > >gydF4y2BadefgydF4y2Baplus_maxgydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba- >gydF4y2BapsgydF4y2Ba。gydF4y2Ba係列gydF4y2Ba(gydF4y2BanpgydF4y2Ba。gydF4y2BaintgydF4y2Ba]:gydF4y2Ba…gydF4y2Ba返回gydF4y2BaxgydF4y2Ba+gydF4y2BaxgydF4y2Ba。gydF4y2Ba馬克斯gydF4y2Ba()gydF4y2Ba> > >gydF4y2BadfgydF4y2Ba。gydF4y2BaBgydF4y2Ba。gydF4y2BagroupbygydF4y2Ba(gydF4y2BadfgydF4y2Ba。gydF4y2Ba一個gydF4y2Ba)gydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2Baplus_maxgydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2Ba0 6gydF4y2Ba1 3gydF4y2Ba2 4gydF4y2Ba名稱:B, dtype: int64gydF4y2Ba
> > >gydF4y2BadefgydF4y2Baplus_mingydF4y2Ba(gydF4y2BaxgydF4y2Ba):gydF4y2Ba…gydF4y2Ba返回gydF4y2BaxgydF4y2Ba+gydF4y2BaxgydF4y2Ba。gydF4y2Ba最小值gydF4y2Ba()gydF4y2Ba> > >gydF4y2BadfgydF4y2Ba。gydF4y2BaBgydF4y2Ba。gydF4y2BagroupbygydF4y2Ba(gydF4y2BadfgydF4y2Ba。gydF4y2Ba一個gydF4y2Ba)gydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2Baplus_mingydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2Ba0 2gydF4y2Ba1 3gydF4y2Ba2 - 6gydF4y2Ba名稱:B, dtype: int64gydF4y2Ba

您也可以返回一個標量值作為一個聚合組的值:gydF4y2Ba

> > >gydF4y2BadefgydF4y2Baplus_lengthgydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba- >gydF4y2BanpgydF4y2Ba。gydF4y2BaintgydF4y2Ba:gydF4y2Ba…gydF4y2Ba返回gydF4y2BalengydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba> > >gydF4y2BadfgydF4y2Ba。gydF4y2BaBgydF4y2Ba。gydF4y2BagroupbygydF4y2Ba(gydF4y2BadfgydF4y2Ba。gydF4y2Ba一個gydF4y2Ba)gydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2Baplus_lengthgydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2Ba0 1gydF4y2Ba1 2gydF4y2Ba名稱:B, dtype: int64gydF4y2Ba

額外的參數可以傳遞函數如下。gydF4y2Ba

> > >gydF4y2BadefgydF4y2Ba計算gydF4y2Ba(gydF4y2BaxgydF4y2Ba,gydF4y2BaygydF4y2Ba,gydF4y2BazgydF4y2Ba)gydF4y2Ba- >gydF4y2BanpgydF4y2Ba。gydF4y2BaintgydF4y2Ba:gydF4y2Ba…gydF4y2Ba返回gydF4y2BalengydF4y2Ba(gydF4y2BaxgydF4y2Ba)gydF4y2Ba+gydF4y2BaygydF4y2Ba*gydF4y2BazgydF4y2Ba> > >gydF4y2BadfgydF4y2Ba。gydF4y2BaBgydF4y2Ba。gydF4y2BagroupbygydF4y2Ba(gydF4y2BadfgydF4y2Ba。gydF4y2Ba一個gydF4y2Ba)gydF4y2Ba。gydF4y2Ba應用gydF4y2Ba(gydF4y2Ba計算gydF4y2Ba,gydF4y2Ba5gydF4y2Ba,gydF4y2BazgydF4y2Ba=gydF4y2Ba10gydF4y2Ba)gydF4y2Ba。gydF4y2Basort_indexgydF4y2Ba()gydF4y2Ba0 51gydF4y2Ba1 52gydF4y2Ba名稱:B, dtype: int64gydF4y2Ba