pyspark.pandas.DataFrame.pandas_on_spark.transform_batch
的用法。用法:
pandas_on_spark.transform_batch(func: Callable[[…], Union[pandas.core.frame.DataFrame, pandas.core.series.Series]], *args: Any, **kwargs: Any) → Union[DataFrame, Series]
使用采用 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)] * len(pdf)) ... >>> df = ps.DataFrame({'A': range(1000)}) >>> df.pandas_on_spark.transform_batch(length) c0 0 83 1 83 2 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 的位置参数。
- **kwargs:
要传递给 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 plus_one_func(pdf) -> ps.DataFrame[int, int]: ... return pdf + 1 >>> df.pandas_on_spark.transform_batch(plus_one_func) c0 c1 0 2 3 1 4 5 2 6 7
>>> def plus_one_func(pdf) -> ps.DataFrame['A': int, 'B': int]: ... return pdf + 1 >>> df.pandas_on_spark.transform_batch(plus_one_func) A B 0 2 3 1 4 5 2 6 7
>>> def plus_one_func(pdf) -> ps.Series[int]: ... return pdf.B + 1 >>> df.pandas_on_spark.transform_batch(plus_one_func) 0 3 1 5 2 7 dtype: int64
您也可以省略类型提示,以便 pandas-on-Spark 推断返回模式如下:
>>> df.pandas_on_spark.transform_batch(lambda pdf: pdf + 1) A B 0 2 3 1 4 5 2 6 7
>>> (df * -1).pandas_on_spark.transform_batch(abs) A B 0 1 2 1 3 4 2 5 6
请注意,您不应转换索引。索引信息不会改变。
>>> df.pandas_on_spark.transform_batch(lambda pdf: pdf.B + 1) 0 3 1 5 2 7 Name: B, dtype: int64
您还可以指定额外的参数,如下所示。
>>> df.pandas_on_spark.transform_batch(lambda pdf, a, b, c: pdf.B + a + b + c, 1, 2, c=3) 0 8 1 10 2 12 Name: B, dtype: int64
相关用法
- Python pyspark DataFrame.pandas_on_spark.apply_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.transform_batch。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。