我想创建一个新类,允许我创建受限制的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