DatetimeIndex:'freq'属性的目的是什么?

时间:2018-01-10 16:40:56

标签: python pandas

我想念pandas DatatimeIndex对象中'freq'属性的要点。它可以在构造时传递或随时设置为属性,但是当此属性更改时,我看不到DatatimeIndex对象的行为有任何差异。

请看这个例子。我们将1天添加到具有freq ='B'的DatetimeIndex,但返回的索引包含非工作日:

import pandas as pd
from pandas.tseries.offsets import *

rng = pd.date_range('2012-01-05', '2012-01-10', freq=BDay())
index = pd.DatetimeIndex(rng)
print(index)

index2 = index + pd.Timedelta('1D')
print(index2)

这是输出:

DatetimeIndex(['2012-01-05', '2012-01-06', '2012-01-09', '2012-01-10'], dtype='datetime64[ns]', freq='B')

DatetimeIndex(['2012-01-06', '2012-01-07', '2012-01-10', '2012-01-11'], dtype='datetime64[ns]', freq='B')
  • 为什么在DatetimeIndex上执行计算(+/- Timedelta)时不考虑freq?
  • 为什么freq不反映DatetimeIndex中包含的实际数据? (它表示'B',即使它包含非工作日)

2 个答案:

答案 0 :(得分:2)

您正在寻找shift

index.shift(1)
Out[336]: DatetimeIndex(['2012-01-06', '2012-01-09', '2012-01-10', '2012-01-11'], dtype='datetime64[ns]', freq='B')

同样,BDay也会这样做

from pandas.tseries.offsets import BDay
index + BDay(1)
Out[340]: DatetimeIndex(['2012-01-06', '2012-01-09', '2012-01-10', '2012-01-11'], dtype='datetime64[ns]', freq='B')

答案 1 :(得分:0)

来自github问题:

  

freq属性是纯粹描述性的,所以它没有   并且不应影响计算。潜在的文档可能更清晰。