pandas.api.extensions.register_dataframe_accessor#
- pandas.api.extensions.register_dataframe_accessor(name)[source]#
- Register a custom accessor on DataFrame objects. - Parameters
- namestr
- Name under which the accessor should be registered. A warning is issued if this name conflicts with a preexisting attribute. 
 
- Returns
- callable
- A class decorator. 
 
 - See also - register_dataframe_accessor
- Register a custom accessor on DataFrame objects. 
- register_series_accessor
- Register a custom accessor on Series objects. 
- register_index_accessor
- Register a custom accessor on Index objects. 
 - Notes - When accessed, your accessor will be initialized with the pandas object the user is interacting with. So the signature must be - def __init__(self, pandas_object): # noqa: E999 ... - For consistency with pandas methods, you should raise an - AttributeErrorif the data passed to your accessor has an incorrect dtype.- >>> pd.Series(['a', 'b']).dt Traceback (most recent call last): ... AttributeError: Can only use .dt accessor with datetimelike values - Examples - In your library code: - 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 - Back in an interactive IPython session: - 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