pyspark.pandas.DataFrame.pandas_on_spark.apply_batch
的用法。用法:
pandas_on_spark.apply_batch(func: Callable[[…], pandas.core.frame.DataFrame], args: Tuple =(), **kwds: Any) → DataFrame
應用一個接受 pandas DataFrame 並輸出 pandas DataFrame 的函數。提供給該函數的 pandas DataFrame 是內部使用的批處理。
另見Transform and apply a function。
注意
func
無法訪問整個輸入幀。 pandas-on-Spark 在內部將輸入係列拆分為多個批次,並在每個批次中多次調用func
。因此,諸如全局聚合之類的操作是不可能的。請參見下麵的示例。>>> # This case does not return the length of whole frame but of the batch internally ... # used. ... def length(pdf) -> ps.DataFrame[int]: ... return pd.DataFrame([len(pdf)]) ... >>> df = ps.DataFrame({'A': range(1000)}) >>> df.pandas_on_spark.apply_batch(length) c0 0 83 1 83 2 83 ... 10 83 11 83
注意
此 API 執行該函數一次以推斷可能昂貴的類型,例如,在聚合或排序後創建數據集時。
為避免這種情況,請在
func
中指定返回類型,例如,如下所示:>>> def plus_one(x) -> ps.DataFrame[float, float]: ... return x + 1
如果指定返回類型,則輸出列名稱變為
c0, c1, c2 … cn
。這些名稱按位置映射到func
中返回的 DataFrame 。要指定列名,您可以使用 pandas 友好的樣式指定它們,如下所示:
>>> def plus_one(x) -> ps.DataFrame["a": float, "b": float]: ... return x + 1
>>> pdf = pd.DataFrame({'a': [1, 2, 3], 'b': [3, 4, 5]}) >>> def plus_one(x) -> ps.DataFrame[zip(pdf.dtypes, pdf.columns)]: ... return x + 1
當給定函數注釋了返回類型時,DataFrame 的原始索引將丟失,並且默認索引將附加到結果 DataFrame。請謹慎配置默認索引。另請參閱Default Index Type。
- func:函數
應用於每個 pandas 框架的函數。
- args:元組
除了數組/係列之外,要傳遞給
func
的位置參數。- **kwds:
附加關鍵字參數作為關鍵字參數傳遞給
func
。
- DataFrame
參數:
返回:
例子:
>>> df = ps.DataFrame([(1, 2), (3, 4), (5, 6)], columns=['A', 'B']) >>> df A B 0 1 2 1 3 4 2 5 6
>>> def query_func(pdf) -> ps.DataFrame[int, int]: ... return pdf.query('A == 1') >>> df.pandas_on_spark.apply_batch(query_func) c0 c1 0 1 2
>>> def query_func(pdf) -> ps.DataFrame["A": int, "B": int]: ... return pdf.query('A == 1') >>> df.pandas_on_spark.apply_batch(query_func) A B 0 1 2
您也可以省略類型提示,以便 pandas-on-Spark 推斷返回模式如下:
>>> df.pandas_on_spark.apply_batch(lambda pdf: pdf.query('A == 1')) A B 0 1 2
您還可以指定額外的參數。
>>> def calculation(pdf, y, z) -> ps.DataFrame[int, int]: ... return pdf ** y + z >>> df.pandas_on_spark.apply_batch(calculation, args=(10,), z=20) c0 c1 0 21 1044 1 59069 1048596 2 9765645 60466196
您還可以使用
np.ufunc
和內置函數作為輸入。>>> df.pandas_on_spark.apply_batch(np.add, args=(10,)) A B 0 11 12 1 13 14 2 15 16
>>> (df * -1).pandas_on_spark.apply_batch(abs) A B 0 1 2 1 3 4 2 5 6
相關用法
- Python pyspark DataFrame.pandas_on_spark.transform_batch用法及代碼示例
- Python pyspark DataFrame.pad用法及代碼示例
- Python pyspark DataFrame.plot.bar用法及代碼示例
- Python pyspark DataFrame.printSchema用法及代碼示例
- Python pyspark DataFrame.pipe用法及代碼示例
- Python pyspark DataFrame.plot.area用法及代碼示例
- Python pyspark DataFrame.plot.line用法及代碼示例
- Python pyspark DataFrame.plot.hist用法及代碼示例
- Python pyspark DataFrame.plot.barh用法及代碼示例
- Python pyspark DataFrame.prod用法及代碼示例
- Python pyspark DataFrame.plot.pie用法及代碼示例
- Python pyspark DataFrame.plot.density用法及代碼示例
- Python pyspark DataFrame.plot.scatter用法及代碼示例
- Python pyspark DataFrame.pop用法及代碼示例
- Python pyspark DataFrame.pow用法及代碼示例
- Python pyspark DataFrame.pivot_table用法及代碼示例
- Python pyspark DataFrame.pivot用法及代碼示例
- Python pyspark DataFrame.pct_change用法及代碼示例
- Python pyspark DataFrame.product用法及代碼示例
- Python pyspark DataFrame.to_latex用法及代碼示例
- Python pyspark DataFrame.align用法及代碼示例
- Python pyspark DataFrame.to_delta用法及代碼示例
- Python pyspark DataFrame.quantile用法及代碼示例
- Python pyspark DataFrame.cumsum用法及代碼示例
- Python pyspark DataFrame.iloc用法及代碼示例
注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.pandas.DataFrame.pandas_on_spark.apply_batch。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。