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

时间:2018-05-31 08:01:47

标签: python datetime

我是Python的新手(来自Matlab)并且在执行一项简单的任务时遇到了一些麻烦:

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

E.g。 2013年1月1日至2013年1月31日每10分钟

在Matlab中:

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

3 个答案:

答案 0 :(得分:0)

如果您可以使用 pandas ,请使用 pd.date_range

<强>实施例

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

答案 1 :(得分:0)

此函数将产生任何间隔,类似于IDEA-171093,但也适用于非整数:

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)]

答案 2 :(得分:0)

我选择了一个随机的日期范围,但这是你如何能够完成它:

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

您可以在创建DataFrame时添加日期范围。您在date_range()方法中输入的第一个参数是开始日期,第二个参数自动是结束日期。您在此示例中输入的最后一个参数是频率参数,您可以将其设置为10分钟。您可以将其设置为&#39; H&#39; 1小时,或者到&#39; M&#39;也是1分钟的间隔。另一种值得注意的方法是asfreq()方法,它允许您编辑频率或存储具有不同频率的另一个数据帧的副本。这是一个例子:

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

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