如何从pandas Series类继承以简化Series类型的子集?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从pandas Series类继承以简化Series类型的子集?相关的知识,希望对你有一定的参考价值。

我想创建一个新类,允许我创建受限制的pandas Series对象,这样用户只需要输入开始日期和初始化系列的周期数。我还希望能够替换该系列中给定日期的值。我在下面做了一个尝试,但我得到了

AttributeError:无法设置属性

当我尝试分配Series.values时,如下所示。如何通过继承这样的系列来创建我的类?

import pandas as pd
import numpy as np

class TimeSeries(Series):
def __init__(self, start_date='1/1/2019', periods=365):
    Series.__init__(self)
    self.range = pd.date_range(start_date, periods=periods, freq='D')
    self.values = pd.Series(np.zeros(len(self.range)), index=self.range)

def set_value(self, at_date, value):
    self.values[at_date] = value
答案

实际上对pandas对象进行子类化是非常必要的。这不是其中之一。为什么不使用date_range功能并推广到系列?

pd.date_range('1/1/2019', periods=365, freq='D').to_series()

2019-01-01   2019-01-01
2019-01-02   2019-01-02
2019-01-03   2019-01-03
2019-01-04   2019-01-04
2019-01-05   2019-01-05

pd.Series(0, index=pd.date_range('1/1/2019', periods=365, freq='D'))

2019-01-01    0
2019-01-02    0
2019-01-03    0
2019-01-04    0
2019-01-05    0

以上是关于如何从pandas Series类继承以简化Series类型的子集?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas教程(非常详细)

python学习——pandas库的使用,仅需要这一篇就足够了

如何从“ pandas.core.series.Series”中提取日期?

初探pandas——索引和查询数据

pandas时间序列滑窗

pandas 学习: pandas 数据结构之Series