pandas.tseries.offsets.DateOffset#

class pandas.tseries.offsets.DateOffset#

日期范围使用的标准日期增量类型。

其工作原理与 relativedelta 的关键字参数形式完全相同。请注意,relativedelta 的位置参数形式不受支持。关键字 n 的使用不被推荐——您最好在使用时指定 n,但无论如何它都在那里。nDateOffset 的子类是必需的。

DateOffset 的工作原理如下。每个偏移量都指定了一组符合 DateOffset 的日期。例如,Bday 将此集合定义为工作日(周一至周五)的日期集合。要测试一个日期是否在 DateOffset dateOffset 的集合中,我们可以使用 is_on_offset 方法:dateOffset.is_on_offset(date)

如果一个日期不在有效日期上,可以使用 rollbackrollforward 方法将日期滚动到该日期之前/之后最近的有效日期。

DateOffset 可以被创建以将日期向前移动给定的有效日期数量。例如,可以将 Bday(2) 添加到一个日期上,将其向前移动两个工作日。如果日期不是从有效日期开始,它首先会被移动到有效日期。因此,伪代码如下:

def __add__(date):
  date = rollback(date) # does nothing if date is valid
  return date + <n number of periods>

当为负数个周期创建日期偏移量时,日期首先会被向前滚动。伪代码如下:

def __add__(date):
  date = rollforward(date) # does nothing if date is valid
  return date + <n number of periods>

零会带来一个问题。它应该向前滚动还是向后滚动?我们任意地将其向前滚动:

date + BDay(0) == BDay.rollforward(date)

由于 0 有点奇怪,我们建议避免使用它。

此外,使用日期组件的单数形式创建 DateOffset 可以用来替换时间戳的某些组件。

Parameters:
nint, 默认值 1

偏移量所代表的时间周期数。如果未指定时间模式,则默认为天数。

normalizebool,默认 False

是否将 DateOffset 加法的结果向下舍入到前一个午夜。

weekday整数 {0, 1, …, 6},默认为 0

星期几的具体整数。

  • 0 是星期一

  • 1 是星期二

  • 2 是星期三

  • 3 是星期四

  • 4 是星期五

  • 5 是星期六

  • 6 是星期日

也可以使用 dateutil.relativedelta 中的 Weekday 类型。

  • MO 是星期一

  • TU 是星期二

  • WE 是星期三

  • TH 是星期四

  • FR 是星期五

  • SA 是星期六

  • SU 是星期日。

**kwds

添加到偏移量值或替换偏移量值的**时间参数**。

添加到 偏移量(如 Timedelta)的参数:

  • years

  • months

  • weeks

  • days

  • hours

  • minutes

  • seconds

  • milliseconds

  • microseconds

  • nanoseconds

替换 偏移量值的参数:

  • year

  • month

  • day

  • weekday

  • hour

  • minute

  • second

  • microsecond

  • nanosecond。

参见

dateutil.relativedelta.relativedelta

relativedelta 类型旨在应用于现有的 datetime,可以替换该 datetime 的特定组件,或者表示时间间隔。

Examples

>>> from pandas.tseries.offsets import DateOffset
>>> ts = pd.Timestamp('2017-01-01 09:10:11')
>>> ts + DateOffset(months=3)
Timestamp('2017-04-01 09:10:11')
>>> ts = pd.Timestamp('2017-01-01 09:10:11')
>>> ts + DateOffset(months=2)
Timestamp('2017-03-01 09:10:11')
>>> ts + DateOffset(day=31)
Timestamp('2017-01-31 09:10:11')
>>> ts + pd.DateOffset(hour=8)
Timestamp('2017-01-01 08:10:11')

Attributes

base

返回调用偏移量对象的副本,其中 n=1 且所有其他属性都相同。

freqstr

返回表示频率的字符串。

kwds

返回偏移量的额外参数字典。

n

name

返回表示基本频率的字符串。

nanos

normalize

rule_code

Methods

copy ()

返回频率的副本。

is_anchored ()

(已弃用) 返回频率是否为单位频率 (n=1) 的布尔值.

is_month_end (ts)

如果时间戳发生在月份结束时,则返回布尔值。

is_month_start (ts)

如果时间戳发生在月份开始时,则返回布尔值。

is_on_offset (dt)

如果时间戳与此频率相交,则返回布尔值。

is_quarter_end (ts)

如果时间戳发生在季度结束时,则返回布尔值。

is_quarter_start (ts)

如果时间戳发生在季度开始时,则返回布尔值。

is_year_end (ts)

如果时间戳发生在年份结束时,则返回布尔值。

is_year_start (ts)

如果时间戳发生在年份开始时,则返回布尔值。

rollback (dt)

如果提供的日期不在偏移量上,则将其向后滚动到下一个偏移量。

rollforward (dt)

如果提供的日期不在偏移量上,则将其向前滚动到下一个偏移量。