pandas 如何访问自定义 Dataframe 访问器的命名空间?

lf5gs5x2  于 2023-02-27  发布在  其他
关注(0)|答案(1)|浏览(102)

根据Pandas docs,可以注册如下自定义访问器:

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

    @property
    def center(self):
        lat = self._obj.latitude
        lon = self._obj.longitude
        return (float(lon.mean()), float(lat.mean()))

    def method(self):
        # do something

假设有多个具有不同名称空间的访问器。例如:

  • 地球2号
  • 地理3

例如,如果我们想从geo调用一个方法,我们可以这样做:

df.geo.method() # here we use geo explicitly

我如何将名称空间存储到变量中或从变量中检索名称空间?
我的想法沿着:

df.variable_namespace.method() # variable_namespace could be geo, geo2 etc..

如果我们希望就名称空间而言具有动态行为,该怎么办?

x4shl7ld

x4shl7ld1#

让我们考虑一个变量负责存储一个命名空间,如下所示:

variable_namespace = 'geo' # or 'geo2', 'geo3' etc.

然后,可以实现动态行为:

df.__getattr__(variable_namespace).method()

相关问题