当前答案(熊猫> = 0.13)
Pandas 0.13中的内部重构大大简化了子类。
Series现在可以像其他任何Python对象一样将Pandas子类化:
class MySeries(pd.Series): def my_method(self): return "my_method"
旧版答案(熊猫<= 0.12)
问题是Series使用
__new__它来确保实例化Series对象。
您可以像这样修改您的课程:
class Support(pd.Series): def __new__(cls, *args, **kwargs): arr = Series.__new__(cls, *args, **kwargs) return arr.view(Support) def supportMethod1(self): print 'I am support method 1'def supportMethod2(self): print 'I am support method 2'
但是,最好使用has-a而不是is-a。或猴子修补Series对象。原因是由于使用熊猫的数据存储特性,您经常会丢失其子类。像这样简单
s.ix[:5] s.cumsum()
将返回Series对象而不是您的子类。在内部,数据存储在连续的数组中并针对速度进行了优化。数据仅在需要时装在一个类中,并且这些类是硬编码的。另外,如果类似的东西
s.ix[:5]应该返回相同的子类,现在还不是很明显。那将取决于您的子类的语义以及附加到它的元数据。
http://nbviewer.ipython.org/3366583/subclassing%20pandas%20objects.ipynb有一些注释。



