当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python pyspark register_dataframe_accessor用法及代码示例

本文简要介绍 pyspark.pandas.extensions.register_dataframe_accessor 的用法。

用法:

pyspark.pandas.extensions.register_dataframe_accessor(name: str) → Callable[[Type[T]], Type[T]]

使用 DataFrame 注册自定义访问器

参数

namestr

注册后调用访问者时使用的名称

返回

可调用的

类装饰器。

注意

访问时,您的访问器将使用用户正在与之交互的pandas-on-Spark 对象进行初始化。访问者的 init 方法应该总是摄取被访问的对象。请参阅初始化签名的示例。

在 pandas API 中,如果传递给您的访问器的数据具有不正确的 dtype,建议提高 AttributeError 以保持一致性。在pandas-on-Spark 中,ValueError 更常用于在给定方法/函数的值的数据类型意外时进行注释。

最终,您可以随意构建它,但 pandas-on-Spark 可能会执行以下操作:

>>> ps.Series(['a', 'b']).dt
...
Traceback (most recent call last):
    ...
ValueError: Cannot call DatetimeMethods on type StringType

例子

在您的库代码中:

from pyspark.pandas.extensions import register_dataframe_accessor

@register_dataframe_accessor("geo")
class GeoAccessor:

    def __init__(self, pandas_on_spark_obj):
        self._obj = pandas_on_spark_obj
        # other constructor logic

    @property
    def center(self):
        # return the geographic center point of this DataFrame
        lat = self._obj.latitude
        lon = self._obj.longitude
        return (float(lon.mean()), float(lat.mean()))

    def plot(self):
        # plot this array's data on a map
        pass

然后,在 ipython 会话中:

>>> ## Import if the accessor is in the other file.
>>> # from my_ext_lib import GeoAccessor
>>> psdf = ps.DataFrame({"longitude": np.linspace(0,10),
...                     "latitude": np.linspace(0, 20)})
>>> psdf.geo.center  
(5.0, 10.0)

>>> psdf.geo.plot()

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.pandas.extensions.register_dataframe_accessor。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。