pyspark.pandas.DataFrame.pandas_on_spark.apply_batch¶
-
pandas_on_spark。
apply_batch
( 函數:可調用的[[…],pandas.core.frame.DataFrame],arg遊戲:元組=(),* *kwds:任何 )→DataFrame¶ -
應用一個函數需要熊貓熊貓DataFrame DataFrame和輸出。熊貓DataFrame給一批內部使用的函數。
另請參閱轉換並應用一個函數。
請注意
的函數無法訪問整個輸入幀。pandas-on-Spark內部將輸入係列分為多個批次和調用函數多次與每一批。因此,隨著全球聚合之類的操作都是不可能的。看下麵的例子。
> > >#這裏不返回整個幀的長度,但是內部的批處理…#使用。…def長度(pdf)- >ps。DataFrame(int,(int]:…返回pd。DataFrame([len(pdf)))…> > >df=ps。DataFrame({“一個”:範圍(1000年)})> > >df。pandas_on_spark。apply_batch(長度)c083年01 832 83年…8383年11
請注意
這個API函數執行一次來推斷的類型可能是非常昂貴的,例如,當聚合或排序後創建的數據集。
為了避免這種情況,指定返回類型
函數
例如,如下:> > >defplus_one(x)- >ps。DataFrame(int,(浮動,浮動]:…返回x+1
如果指定返回類型,輸出列名稱c0, c1, c2…cn。這些名稱映射到返回DataFrame按位置
函數
。指定列的名稱,您可以指定在NumPy複合類型樣式如下:
> > >defplus_one(x)- >ps。DataFrame((“指數”,int),((“一個”,浮動),(“b”,浮動)]]:…返回x+1
> > >pdf=pd。DataFrame({“一個”:(1,2,3),“b”:(3,4,5]})> > >defplus_one(x)- >ps。DataFrame(…(pdf。指數。的名字,pdf。指數。dtype),郵政編碼(pdf。dtypes,pdf。列):…返回x+1
- 參數
-
- 函數 函數
-
功能適用於每個熊貓幀。
- arg遊戲 元組
-
位置參數傳遞函數除了數組/係列。
- * * kwds
-
增加關鍵字參數通過關鍵字參數函數。
- 返回
-
- DataFrame
另請參閱
-
DataFrame.apply
-
行/ columnwise操作。
-
DataFrame.applymap
-
elementwise操作。
-
DataFrame.aggregate
-
隻有執行聚合類型操作。
-
DataFrame.transform
-
隻有執行類型轉換操作。
-
Series.pandas_on_spark.transform_batch
-
變換搜索每個熊貓塊。
例子
> > >df=ps。DataFrame(((1,2),(3,4),(5,6)),列=(“一個”,“B”])> > >df一個B0 1 21 3 42 5 6
> > >defquery_func(pdf)- >ps。DataFrame(int,(int,int]:…返回pdf。查詢(“= = 1”)> > >df。pandas_on_spark。apply_batch(query_func)c0 c10 1 2
> > >defquery_func(pdf)- >ps。DataFrame((“idx”,int),((“一個”,int),(“B”,int)]]:…返回pdf。查詢(“= = 1”)> > >df。pandas_on_spark。apply_batch(query_func)一個Bidx0 1 2
你也可以忽略提示所以pandas-on-Spark推斷返回類型模式如下:
> > >df。pandas_on_spark。apply_batch(λpdf:pdf。查詢(“= = 1”))一個B0 1 2
您還可以指定額外的參數。
> > >def計算(pdf,y,z)- >ps。DataFrame(int,(int,int]:…返回pdf* *y+z> > >df。pandas_on_spark。apply_batch(計算,arg遊戲=(10),z=20.)c0 c10 21 10441 59069 10485962 9765645 60466196
您還可以使用
np.ufunc
和內置函數作為輸入。> > >df。pandas_on_spark。apply_batch(np。添加,arg遊戲=(10,))一個B0 11 121 13 142 15 16
> > >(df*- - - - - -1)。pandas_on_spark。apply_batch(腹肌)一個B0 1 21 3 42 5 6