首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :向类pandas.core.series.Series添加方法

Python :向类pandas.core.series.Series添加方法
EN

Stack Overflow用户
提问于 2014-05-20 14:32:53
回答 1查看 2.1K关注 0票数 3

我想使用Python中的时间序列,因此,Pandas的series类非常完美,并且有很多有用的方法。

现在,我想添加一些我需要并且没有实现的方法。例如,假设我对在时间序列中附加两次值的方法感兴趣,让我们调用该方法append2

代码语言:javascript
复制
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类中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-20 14:42:37

你可以这样做。您根本不需要子类,而只需要http://pandas-docs.github.io/pandas-docs-travis/faq.html#adding-features-to-your-pandas-installation。如果附加两次(作为附加副本),这将更有效。

代码语言:javascript
复制
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
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23762712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档