【发布时间】:2020-05-01 20:22:19
【问题描述】:
我正在尝试在 python 中创建一个自定义日期时间类来支持时间序列模型。在查看了一些现有的 python 库后,我发现 pandas DatetimeIndex 类提供了我正在寻找的大部分功能,但我仍然想添加一些方法来满足我的需要。我尝试使用自定义 init 构造函数对 DatetimeIndex 类进行子类化,然后调用超级 init 构造函数,但我似乎无法让它工作。有没有人这样做过?如果能深入了解如何实现这一点,那就太好了。
这是我能想到的最简单的例子。这是一个定义在名为 time 的模块中的类:
from pandas import DatetimeIndex
class DatetimeSub(DatetimeInex):
def __init___(initTime):
super().__init__(initTime)
当我在控制台中使用以下代码测试类时:
import numpy as np
from time import DatetimeSub
testTime = TimeEfo2(np.arange('1985-01-01 12:00','1985-02-01 12:00', dtype="datetime64[D]"))
我收到以下错误:
TypeError: object.init() 只接受一个参数(要初始化的实例)
我不明白,因为您可以使用 datetime64 数组实例化 DatetimeIndex。此代码工作正常:
from pandas import DatetimeIndex
import numpy as np
dT = DatetimeIndex(np.arange('1985-01-01 12:00','1985-02-01 12:00', dtype="datetime64[D]"))
谢谢库恩!这样可行。如果我想创建自己的自定义构造函数,例如:
from pandas import DatetimeIndex
import numpy as np
class DatetimeSub(DatetimeIndex):
def __init__(self, bgnTime, endTime, unit = 'D'):
# I am now constructing my numpy datetime64 array here:
initTime = np.arange(bgnTime, endTime, dtype="datetime64[{}]".format(unit))
# How do I call the super class to populate with the numpy array? This does not work:
super().__init__(initTime)
谢谢!
【问题讨论】:
-
您需要提供minimal reproducible example 并说明您的子类行为不当。
标签: python pandas datetimeindex datetime64