+-
Python Pandas:向类pandas.core.series.Series添加方法
我想在 Python中使用时间序列,因此,Pandas的Series类非常完美,并且有很多有用的方法.

现在我想添加一些我需要的方法,但是没有实现.例如,让我们说我有兴趣添加一个方法,该方法将两次值附加到时间序列,让我们调用该方法append2:

import pandas                                                                         
import random                                                                         

class Testclass(pandas.core.series.Series):                                           
        def append2(self, val):                                                       
                return self.append(val).append(val)                                   

dates = pandas.date_range('1/1/2011', periods=72, freq='H')                           
data = [random.randint(20, 100) for x in range(len(dates))]                           
ts = pandas.Series(data, index=dates)                                                 

a = Testclass()                                                                       
b = a.append2(ts[[1]])                                                                

print type(a)                                                                         
print type(b)

现在我发现a的类和b的类是不同的; b是pandas.core.series.Series对象,因此您无法将方法append2应用于它.

我想b保存append2方法(保存与a相同的类).那可能吗?有没有其他方法可以在不修改Pandas包的源代码的情况下向Series类添加方法?

最佳答案
你可以这样做.您根本不需要子类,而只需要 monkey-patch.这样可以更有效地附加两次(作为附加副本).

In [5]: s = Series(np.arange(5))

In [15]: def append2(self, val):
   ....:     if not isinstance(val, Series):
   ....:         val = Series(val)
   ....:     return concat([ self, val, val ])
   ....: 

In [16]: Series.append2 = append2

In [17]: s.append2(3)
Out[17]: 
0    0
1    1
2    2
3    3
4    4
0    3
0    3
dtype: int64
点击查看更多相关文章

转载注明原文:Python Pandas:向类pandas.core.series.Series添加方法 - 乐贴网