pandas time_range 不是从开始日期开始

Moj*_*Moj 5 python datetime time-series pandas

我最近开始使用 pandas,并且有一些关于 date_range 的问题。

In [168]: pd.date_range("2013-07-01", "2013-10-03", freq='W').to_series()
Out[168]: 
2013-07-07   2013-07-07
2013-07-14   2013-07-14
2013-07-21   2013-07-21
2013-07-28   2013-07-28
2013-08-04   2013-08-04
2013-08-11   2013-08-11
2013-08-18   2013-08-18
2013-08-25   2013-08-25
2013-09-01   2013-09-01
2013-09-08   2013-09-08
2013-09-15   2013-09-15
2013-09-22   2013-09-22
2013-09-29   2013-09-29
Freq: W-SUN, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,我预计第一个索引2013-07-01不是2013-07-07. 我检查了一下,发现默认情况下 date_range 考虑左右闭合。还尝试了一些其他频率,例如W-MON,但没有帮助。

Olr*_*ric 1

8年后,1.5.2版本仍然有同样的bug:

my_period = pd.date_range('2015-09-01', '2016-07-01', freq='3M')
my_period
Run Code Online (Sandbox Code Playgroud)

给出

DatetimeIndex(['2015-09-30', '2015-12-31', '2016-03-31', '2016-06-30'], dtype='datetime64[ns]', freq='3M')
Run Code Online (Sandbox Code Playgroud)

默认情况下,开始时间应固定在给定日期(恕我直言),此处为 2015 年 9 月 1 日 00:00。星期日的故事在这里不适用。

有趣的是,如果我添加一个小时,它会正确使用它,但日期仍然不正确:

my_period = pd.date_range('2015-09-01 02:10', '2016-07-01', freq='3M')
my_period

DatetimeIndex(['2015-09-30 02:10:00', '2015-12-31 02:10:00',
               '2016-03-31 02:10:00', '2016-06-30 02:10:00'],
              dtype='datetime64[ns]', freq='3M')
Run Code Online (Sandbox Code Playgroud)