当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas date_range方法用法及代码示例


Pandas date_range(~) 方法返回固定频率的 DatetimeIndex

参数

1.start | stringdatetime-like | optional

范围的下限(含)。

2. end | stringdatetime-like | optional

范围的上限(含)。

3. periods | int | optional

所需的日期数量。默认情况下,periods=True

警告

在上述三个参数中,必须指定两个 - 不能少,不能多。

4. freq | stringDateOffset | optional

一对连续日期之间的step-size(间隔)。默认情况下,freq="D"(一天的step-size)。

5. tz | strtzinfo | optional

日期的时区。默认情况下,date-times 很幼稚,没有任何时区的概念。

6. normalize | boolean | optional

是否将日期的时间单位设置为午夜。默认情况下,normalize=False

7. name | string | optional

生成的 DatetimeIndex 的名称。默认情况下,name=None

8. closed | Nonestring | optional

是否使边界( startend )包含/排除:

说明

"left"

  • 下限变得包含在内。

  • 上限变得唯一。

"right"

  • 下限变得排他。

  • 上限变得包含在内。

None

两个界限都包含在内。

默认情况下,closed=None

返回值

一个 DatetimeIndex

例子

基本用法

要创建从 2020-12-252020-12-27(包括两者)的日期序列:

pd.date_range(start="2020-12-25", end="2020-12-27")



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

默认的step-size(频率)是一天,因此这就是我们在输出中看到freq="D"的原因。

您还可以将 datetime 类似对象用于 startend

import datetime
datetime_tomorrow = datetime.date.today() + datetime.timedelta(days=1)
pd.date_range(start=datetime.date.today(), end=datetime_tomorrow)



DatetimeIndex(['2020-09-02', '2020-09-03'], dtype='datetime64[ns]', freq='D')

指定期间

要从 2020-12-25(含)创建长度为 3 的日期序列:

pd.date_range(start="2020-12-25", periods=3)



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

指定频率

频率可以被认为是step-size。默认频率为1日:

pd.date_range(start="2020-12-25", periods=3)   # freq="D"



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

让我们尝试 2 天的间隔:

pd.date_range(start="2020-12-25", periods=3, freq="2D")



DatetimeIndex(['2020-12-25', '2020-12-27', '2020-12-29'], dtype='datetime64[ns]', freq='2D')

现在让我们尝试 1 个月的间隔:

pd.date_range(start="2020-12-25", periods=3, freq="M")



DatetimeIndex(['2020-12-31', '2021-01-31', '2021-02-28'], dtype='datetime64[ns]', freq='M')

如果频率设置为月,则 start 参数的日单位变得无关紧要 - 日将始终设置为月底。

指定时区

我们可以使用 tz 参数显式指定时区,而不是不知道时区的默认日期:

pd.date_range(start="2020-12-25", periods=3, tz="Europe/Paris")



DatetimeIndex(['2020-12-25 00:00:00+01:00',
               '2020-12-26 00:00:00+01:00',
               '2020-12-27 00:00:00+01:00'],
               dtype='datetime64[ns, Europe/Paris]', freq='D')

请注意我们如何将 +01:00 附加到日期时间,这表示 +1 小时的 UTC 偏移量。

标准化日期

默认情况下,如果您指定一个时间单位,该方法将遵循时间单位(例如一天中的小时):

pd.date_range(start="2020-12-25 05:15:20", periods=3)



DatetimeIndex(['2020-12-25 05:15:20',
               '2020-12-26 05:15:20',
               '2020-12-27 05:15:20'],
               dtype='datetime64[ns]', freq='D')

我们可以通过设置 normalize=True 将日期时间设置为午夜:

pd.date_range(start="2020-12-25 05:15:20", periods=3, normalize=True)



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

指定名称

为生成的 DatetimeIndex 命名:

pd.date_range(start="2020-12-25", periods=2, name="My Dates")



DatetimeIndex(['2020-12-25', '2020-12-26'], dtype='datetime64[ns]', name='My Dates', freq='D')

请注意我们如何将 name="My Dates" 编码到 DatetimeIndex 中。

指定收盘价

默认情况下, closed=None ,这意味着下限和上限都包含在内:

pd.date_range(start="2020-12-25", end="2020-12-27")



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

要使下限包含在内且上限不包含,请设置 closed="left"

pd.date_range(start="2020-12-25", end="2020-12-27", closed="left")



DatetimeIndex(['2020-12-25', '2020-12-26'], dtype='datetime64[ns]', freq='D')

要使下限不包含且上限包含,请设置 closed="right"

pd.date_range(start="2020-12-25", end="2020-12-27", closed="right")



DatetimeIndex(['2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

使用 DatetimeIndex 创建 DataFrame

date_range(~) 方法可用于用 DatetimeIndex 初始化 DataFrame,如下所示:

index_date = pd.date_range("2020-12-25", periods=4, freq="3H")
df = pd.DataFrame({"A":["a","b","c","d"]}, index=index_date)
df



                     A
2020-12-25 00:00:00  a
2020-12-25 03:00:00  b
2020-12-25 06:00:00  c
2020-12-25 09:00:00  d

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas | date_range method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。