當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python pandas.api.extensions.register_series_accessor用法及代碼示例

用法:

pandas.api.extensions.register_series_accessor(name)

在 Series 對象上注冊自定義訪問器。

參數

namestr

訪問者應注冊的名稱。如果此名稱與預先存在的屬性衝突,則會發出警告。

返回

可調用的

類裝飾器。

注意

訪問時,您的訪問器將使用用戶正在與之交互的 pandas 對象進行初始化。所以簽名必須是

def __init__(self, pandas_object): # noqa:E999
    ...

為了與 pandas 方法保持一致,如果傳遞給訪問器的數據具有不正確的 dtype,則應引發 AttributeError

>>> pd.Series(['a', 'b']).dt
Traceback (most recent call last):
...
AttributeError:Can only use .dt accessor with datetimelike values

例子

在您的庫代碼中:

import pandas as pd

@pd.api.extensions.register_dataframe_accessor("geo")
class GeoAccessor:
    def __init__(self, pandas_obj):
        self._obj = pandas_obj

    @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, e.g., using Cartopy
        pass

回到交互式 IPython 會話:

In [1]:ds = pd.DataFrame({"longitude":np.linspace(0, 10),
   ...:                   "latitude":np.linspace(0, 20)})
In [2]:ds.geo.center
Out[2]:(5.0, 10.0)
In [3]:ds.geo.plot()  # plots data on a map

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.api.extensions.register_series_accessor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。