python – 当子类化DataFrame时如何为’loc’编写包装器方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 当子类化DataFrame时如何为’loc’编写包装器方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含942字,纯文字阅读大概需要2分钟。
内容图文
![python – 当子类化DataFrame时如何为’loc’编写包装器方法](/upload/InfoBanner/zyjiaocheng/788/3d799717f784479a95c30525942ca447.jpg)
我正在尝试为DataFrame的子类编写一个包装器方法
class SubDataFrame(DataFrame):
...
a = SubDataFrame()
b = a.loc[row, column]
在最后一行中,我想在处理超类中的loc之前或之后,在SubDataFrame类中单独处理元数据.
我不知道如何实现这种表示法,因为如果我只是定义
def loc(self, *args, **kwargs)
SubDataFrame中的方法loc []括号表示法不起作用. (AttributeError:instancemethod没有属性getitem).
我找不到关于如何实现这个的文档.
解决方法:
不幸的是,Pandas实现索引的方式并不简单.
通常,为了对对象使用索引访问(例如,obj [something]),它需要具有__getitem__和__setitem__方法(参见here和here).
对于DataFrame,loc属性不是方法,而是委托索引的对象:
>>> frame = pd.DataFrame()
>>> type(frame.loc)
pandas.core.indexing._LocIndexer
您可以看到类定义here.在这种情况下,_LocIndexer从_NDFrameIndexer继承(最终),它定义了索引访问所需的__getitem__和__setitem__方法.
如果你想通过你的子类中的.loc []来拦截访问,你可能必须定义某种代理类,它在传递给原始实现之前实现所需的行为.但我怀疑这将是困难且容易出错的.
内容总结
以上是互联网集市为您收集整理的python – 当子类化DataFrame时如何为’loc’编写包装器方法全部内容,希望文章能够帮你解决python – 当子类化DataFrame时如何为’loc’编写包装器方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。