leo*_*lds 5 python subclass pandas
我正在尝试为 的子类编写一个包装方法DataFrame
class SubDataFrame(DataFrame):
...
a = SubDataFrame()
b = a.loc[row, column]
Run Code Online (Sandbox Code Playgroud)
在最后一行中,我想在处理超类中的元数据SubDataFrame之前或之后在类中单独处理元数据。loc
我不知道如何实现这个符号,因为如果我只是定义
def loc(self, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
SubDataFrame括号中的方法loc[]不起作用。( AttributeError: instancemethod has no attribute getitem)。
我找不到关于如何实现这一点的文档。
不幸的是,Pandas 实现索引的方式一点也不简单。
一般来说,为了对对象使用索引访问(例如,obj[something]),它需要具有__getitem__和__setitem__方法(请参阅此处和此处)。
对于 a DataFrame,loc属性不是方法,而是委托索引的对象:
>>> frame = pd.DataFrame()
>>> type(frame.loc)
pandas.core.indexing._LocIndexer
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看类定义。在本例中,_LocIndexer(最终)继承自,它定义了索引访问_NDFrameIndexer所需的条件__getitem__和方法。__setitem__
如果您想.loc[]在子类中拦截访问,您可能必须定义某种代理类来实现所需的行为,然后再传递给原始实现。不过,我怀疑这会很困难并且容易出错。
| 归档时间: |
|
| 查看次数: |
829 次 |
| 最近记录: |