pandas.date_range#

pandas.date_range(start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, inclusive='both', *, unit=None, **kwargs)[源代码]#

返回固定频率的 DatetimeIndex。

返回等间距的时间点范围(相邻时间点之间的差值由给定的频率指定),这些时间点落在区间 [start, end] 内,其中第一个和最后一个时间点分别是该区间内第一个和最后一个落在 freq 边界上的时间点(如果 freq 是频率字符串)或对于 freq 有效的时间点(如果 freqpandas.tseries.offsets.DateOffset)。如果 freq 为正,则时间点满足 start <[=] x <[=] end,如果 freq 为负,则时间点满足 end <[=] x <[=] start。(如果 startendfreq 中只有一个不是指定的,那么可以根据 periods(范围内的步数)来计算出这个缺失的参数。请参见下面的说明。)

参数:
startstr 或 datetime-like, 可选

生成日期的左边界。

endstr 或 datetime-like, 可选

生成日期的右边界。

periodsint, 可选

要生成的周期数。

freqstr, Timedelta, datetime.timedelta, 或 DateOffset, 默认为 ‘D’

频率字符串可以有倍数,例如 ‘5h’。请在此处参阅频率别名列表。

tzstr 或 tzinfo, 可选

返回本地化 DatetimeIndex 的时区名称,例如 ‘Asia/Hong_Kong’。默认情况下,除非传递了时区感知的 datetime-like 对象,否则生成的 DatetimeIndex 是时区感知的。

normalizebool,默认为 False

在生成日期范围之前将 start/end 日期规范化为午夜。

name可哈希,默认为 None

生成的 DatetimeIndex 的名称。

inclusive{“both”, “neither”, “left”, “right”}, 默认值 “both”

包括边界;是否将每个边界设置为闭合或开放。

unit{‘s’, ‘ms’, ‘us’, ‘ns’, None}, 默认为 None

指定所需结果的分辨率。如果未指定,则根据 ‘start’、‘end’ 和 ‘freq’ 推断,使用与 Timestamp 相同的推断逻辑,取提供的三者中最高的分辨率。

版本 2.0.0 中已添加。

**kwargs

为兼容性而设。对结果没有影响。

返回:
DatetimeIndex

生成的日期的 DatetimeIndex 对象。

另请参阅

DatetimeIndex

不可变的 datetime 容器。

timedelta_range

返回一个固定频率的 TimedeltaIndex。

period_range

返回固定频率的 PeriodIndex。

interval_range

返回一个固定频率的 IntervalIndex。

注意

startendperiodsfreq 这四个参数中,最多可以一次指定三个。在 startendperiods 这三个参数中,至少必须指定两个。如果省略 freq,则生成的 DatetimeIndex 将在 startend 之间包含 periods 个线性间隔的元素(两端闭合)。

要了解更多关于频率字符串的信息,请参阅 此链接

示例

指定值

接下来的四个示例生成相同的 DatetimeIndex,但变化了 startendperiods 的组合。

指定 startend,使用默认的日频率。

>>> pd.date_range(start="1/1/2018", end="1/08/2018")
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
               '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08'],
              dtype='datetime64[us]', freq='D')

指定时区感知的 startend,使用默认的日频率。

>>> pd.date_range(
...     start=pd.to_datetime("1/1/2018").tz_localize("Europe/Berlin"),
...     end=pd.to_datetime("1/08/2018").tz_localize("Europe/Berlin"),
... )
DatetimeIndex(['2018-01-01 00:00:00+01:00', '2018-01-02 00:00:00+01:00',
               '2018-01-03 00:00:00+01:00', '2018-01-04 00:00:00+01:00',
               '2018-01-05 00:00:00+01:00', '2018-01-06 00:00:00+01:00',
               '2018-01-07 00:00:00+01:00', '2018-01-08 00:00:00+01:00'],
              dtype='datetime64[us, Europe/Berlin]', freq='D')

指定 startperiods(天数)。

>>> pd.date_range(start="1/1/2018", periods=8)
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
               '2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08'],
              dtype='datetime64[us]', freq='D')

指定 endperiods(天数)。

>>> pd.date_range(end="1/1/2018", periods=8)
DatetimeIndex(['2017-12-25', '2017-12-26', '2017-12-27', '2017-12-28',
               '2017-12-29', '2017-12-30', '2017-12-31', '2018-01-01'],
              dtype='datetime64[us]', freq='D')

指定 startendperiods;频率自动生成(线性间隔)。

>>> pd.date_range(start="2018-04-24", end="2018-04-27", periods=3)
DatetimeIndex(['2018-04-24 00:00:00', '2018-04-25 12:00:00',
               '2018-04-27 00:00:00'],
              dtype='datetime64[us]', freq=None)

其他参数

freq(频率)更改为 'ME'(月末频率)。

>>> pd.date_range(start="1/1/2018", periods=5, freq="ME")
DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31', '2018-04-30',
               '2018-05-31'],
              dtype='datetime64[us]', freq='ME')

允许使用倍数

>>> pd.date_range(start="1/1/2018", periods=5, freq="3ME")
DatetimeIndex(['2018-01-31', '2018-04-30', '2018-07-31', '2018-10-31',
               '2019-01-31'],
              dtype='datetime64[us]', freq='3ME')

freq 也可以指定为 Offset 对象。

>>> pd.date_range(start="1/1/2018", periods=5, freq=pd.offsets.MonthEnd(3))
DatetimeIndex(['2018-01-31', '2018-04-30', '2018-07-31', '2018-10-31',
               '2019-01-31'],
              dtype='datetime64[us]', freq='3ME')

指定 tz 来设置时区。

>>> pd.date_range(start="1/1/2018", periods=5, tz="Asia/Tokyo")
DatetimeIndex(['2018-01-01 00:00:00+09:00', '2018-01-02 00:00:00+09:00',
               '2018-01-03 00:00:00+09:00', '2018-01-04 00:00:00+09:00',
               '2018-01-05 00:00:00+09:00'],
              dtype='datetime64[us, Asia/Tokyo]', freq='D')

inclusive 控制是否包含边界上的 startend。默认值“both”在两端都包含边界点。

>>> pd.date_range(start="2017-01-01", end="2017-01-04", inclusive="both")
DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04'],
              dtype='datetime64[us]', freq='D')

使用 inclusive='left' 来排除落在边界上的 end

>>> pd.date_range(start="2017-01-01", end="2017-01-04", inclusive="left")
DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03'],
              dtype='datetime64[us]', freq='D')

使用 inclusive='right' 来排除落在边界上的 start,同样 inclusive='neither' 会排除 startend

>>> pd.date_range(start="2017-01-01", end="2017-01-04", inclusive="right")
DatetimeIndex(['2017-01-02', '2017-01-03', '2017-01-04'],
              dtype='datetime64[us]', freq='D')

指定单位

>>> pd.date_range(start="2017-01-01", periods=10, freq="100YS", unit="s")
DatetimeIndex(['2017-01-01', '2117-01-01', '2217-01-01', '2317-01-01',
               '2417-01-01', '2517-01-01', '2617-01-01', '2717-01-01',
               '2817-01-01', '2917-01-01'],
              dtype='datetime64[s]', freq='100YS-JAN')