如何以 Z 单位的间隔生成从日期 X 到日期 Y 的常规时间序列?



我是Python的新手(来自Matlab(,并且在一个简单的任务上遇到了一些麻烦:

如何创建从日期 X 到日期 Y 的常规时间序列,间隔为 Z 单位?

例如,从2013年1月1日至2013年1月31日,每10分钟一

班在 Matlab 中:

t = datenum(2013,1,1):datenum(0,0,0,0,10,0):datenum(2013,12,31);

如果你可以使用熊猫,那就使用pd.date_range

前任:

import pandas as pd
d = pd.date_range(start='2013/1/1', end='2013/12/31', freq="10min")

这个函数将产生任何内容的间隔,类似于range,但也适用于非整数:

def make_series(begin, end, interval):
x = begin
while x < end:
yield x
x = x + interval

然后,您可以执行以下操作:

>>> import datetime
>>> date_x = datetime.datetime(2013,1,1)
>>> date_y = datetime.datetime(2013,12,31)
>>> step = datetime.timedelta(days=50)
>>>
>>> list(make_series(date_x, date_y, step))
[datetime.datetime(2013, 1, 1, 0, 0), datetime.datetime(2013, 2, 20, 0, 0), datetime.datetime(2013, 4, 11, 0, 0), datetime.datetime(2013, 5, 31, 0, 0), datetime
.datetime(2013, 7, 20, 0, 0), datetime.datetime(2013, 9, 8, 0, 0), datetime.datetime(2013, 10, 28, 0, 0), datetime.datetime(2013, 12, 17, 0, 0)]

我选择了一个随机日期范围,但以下是您基本上可以完成它的方法:

a = pd.Series({'A': 1, 'B': 2, 'C': 3}, pd.date_range('2018-2-6', '2018-3-4', freq='10Min'))
print(a)

您可以在创建数据帧时添加日期范围。在 date_range(( 方法中输入的第一个参数是开始日期,第二个参数自动是结束日期。在此示例中输入的最后一个参数是频率参数,可以将其设置为 10 分钟。您可以将其设置为"H"表示 1 小时,或设置为"M"以 1 分钟为间隔。然而,另一个值得注意的方法是 asfreq(( 方法,它可以让您编辑频率或存储另一个具有不同频率的数据帧的副本。下面是一个示例:

copy = a.asfreq('45Min', method='pad')
print(copy)

如果你想研究多个频率,这一点很重要。您可以重复复制数据帧,以便查看不同的时间间隔。希望这个答案有所帮助。

最新更新