Python DatetimeIndex:x27的目的是什么;频率';属性

Python DatetimeIndex:x27的目的是什么;频率';属性,python,pandas,Python,Pandas,我忽略了DatatimeIndex对象中“freq”属性的要点。它可以在构造时传递,也可以在任何时候设置为属性,但是当这个属性改变时,我看不到DatatimeIndex对象的行为有什么不同 请看这个例子。我们向具有freq='B'但返回的索引包含非营业日的DatetimeIndex添加1天: import pandas as pd from pandas.tseries.offsets import * rng = pd.date_range('2012-01-05', '2012-01-10

我忽略了DatatimeIndex对象中“freq”属性的要点。它可以在构造时传递,也可以在任何时候设置为属性,但是当这个属性改变时,我看不到DatatimeIndex对象的行为有什么不同

请看这个例子。我们向具有freq='B'但返回的索引包含非营业日的DatetimeIndex添加1天:

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”)
您正在寻找的

B天也会这么做

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')
发行日期:

freq属性是纯描述性的,因此它不是 不应该影响计算。文件可能更清晰


我的印象是使用了
freq
;它不是验证器。因此,它从最初的
date\u range()
调用中得到提示,对可能需要的优化进行有根据的猜测。@luca why你说,不使用它,它传递给shift,如我上面所示
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')