pandas.api.extensions.register_series_accessor#

pandas.api.extensions.register_series_accessor(name)[源代码][源代码]#

在 Series 对象上注册一个自定义访问器。

参数:
名字str

访问器应注册的名称。如果此名称与预先存在的属性冲突,则会发出警告。

返回:
callable

一个类装饰器。

参见

register_dataframe_accessor

在 DataFrame 对象上注册一个自定义访问器。

register_series_accessor

在 Series 对象上注册一个自定义访问器。

register_index_accessor

在索引对象上注册一个自定义访问器。

备注

此函数允许您为 Series 注册一个自定义的访问器类。访问器类的要求如下:

  • 必须包含一个初始化方法,该方法:

    • 接受一个单一的 Series 对象

    • 如果 Series 对象没有正确匹配的访问器输入,则会引发 AttributeError

  • 必须包含每个访问模式的方法。

    • 这些方法应该能够接受任何参数签名。

    • 如果没有额外的参数需要,可以使用 @property 装饰器来访问。

示例

一个只接受整数的访问器可以定义这样的类:

>>> @pd.api.extensions.register_series_accessor("int_accessor")
... class IntAccessor:
...     def __init__(self, pandas_obj):
...         if not pandas_obj.dtype == 'int64':
...             raise AttributeError("The series must contain integer data only")
...         self._obj = pandas_obj
...
...     def sum(self):
...         return self._obj.sum()
...
>>> df = pd.Series([1, 2, 'x'])
>>> df.int_accessor
Traceback (most recent call last):
...
AttributeError: The series must contain integer data only.
>>> df = pd.Series([1, 2, 3])
>>> df.int_accessor.sum()
6