mars.dataframe.date_range#

mars.dataframe.date_range(start=None, end=None, periods=None, freq=None, tz=None, normalize=False, name=None, closed=NoDefault.no_default, inclusive=None, chunk_size=None, **kwargs)[来源]#

返回一个固定频率的 DatetimeIndex。

Parameters
  • start (str类似日期时间, 可选) – 生成日期的左边界。

  • end (str类似日期时间, 可选) – 生成日期的右边界。

  • periods (int, 可选) – 生成的周期数。

  • freq (strDateOffset, 默认 'D') – 频率字符串可以有多个,例如‘5H’。请参阅 这里获取频率别名的列表。

  • tz (strtzinfo, 可选) – 返回本地化的 DatetimeIndex 的时区名称,例如‘Asia/Hong_Kong’。默认情况下,结果 DatetimeIndex 是不带时区的。

  • normalize (bool, 默认值为 False) – 在生成日期范围之前,将开始/结束日期标准化为午夜。

  • name (str, default None) – 生成的 DatetimeIndex 的名称。

  • 包含 ({“两者”, “都不”, “左侧”, “右侧”}, 默认 “两者”) – 包含边界;是否将每个边界设置为闭合或开放。

  • **kwargs – 兼容性使用。对结果没有影响。

Returns

rng

Return type

日期时间索引

另请参阅

DatetimeIndex

一个不可变的日期时间容器。

timedelta_range

返回一个固定频率的 TimedeltaIndex。

period_range

返回一个固定频率的 PeriodIndex。

interval_range

返回一个固定频率的 IntervalIndex。

备注

在四个参数 start, end, periods, 和 freq 中,必须指定恰好三个。如果省略 freq,则生成的 DatetimeIndex 将在 startend 之间有 periods 个线性间隔的元素(两端闭合)。

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

示例

指定值

接下来的四个示例生成相同的 DatetimeIndex,但在 startendperiods 的组合上有所不同。

指定 startend,默认日频率。 >>> import mars.dataframe as md

>>> md.date_range(start='1/1/2018', end='1/08/2018').execute()
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[ns]', freq='D')

指定 startperiods,期数(天数)。

>>> md.date_range(start='1/1/2018', periods=8).execute()
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[ns]', freq='D')

指定 endperiods,周期数(天数)。

>>> md.date_range(end='1/1/2018', periods=8).execute()
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[ns]', freq='D')

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

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

其他参数

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

>>> md.date_range(start='1/1/2018', periods=5, freq='M').execute()
DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31', '2018-04-30',
               '2018-05-31'],
              dtype='datetime64[ns]', freq='M')

允许多个

>>> md.date_range(start='1/1/2018', periods=5, freq='3M').execute()
DatetimeIndex(['2018-01-31', '2018-04-30', '2018-07-31', '2018-10-31',
               '2019-01-31'],
              dtype='datetime64[ns]', freq='3M')

freq 也可以指定为一个 Offset 对象。

>>> md.date_range(start='1/1/2018', periods=5, freq=md.offsets.MonthEnd(3)).execute()
DatetimeIndex(['2018-01-31', '2018-04-30', '2018-07-31', '2018-10-31',
               '2019-01-31'],
              dtype='datetime64[ns]', freq='3M')

指定 tz 来设置时区。

>>> md.date_range(start='1/1/2018', periods=5, tz='Asia/Tokyo').execute()
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[ns, Asia/Tokyo]', freq='D')

inclusive 控制是否包括位于边界的 startend。默认值为“both”,包括两端的边界点。

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

使用 inclusive='left' 来排除 end 如果它落在边界上。

>>> md.date_range(start='2017-01-01', end='2017-01-04', closed='left').execute()
DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03'],
              dtype='datetime64[ns]', freq='D')

使用 inclusive='right' 来排除 start 如果它位于边界上,类似地 inclusive=’neither’ 将排除 startend

>>> md.date_range(start='2017-01-01', end='2017-01-04', closed='right').execute()
DatetimeIndex(['2017-01-02', '2017-01-03', '2017-01-04'],
              dtype='datetime64[ns]', freq='D')

注意

需要使用Pandas 1.4.0或更高版本才能使用 inclusive='neither'。否则可能会引发错误。