熊猫`period_range`给出了奇怪的结果

时间:2016-07-31 06:18:04

标签: python pandas

我想要一个25小时偏移的熊猫时期范围,我看到有两种方法可以做到这一点(见here):

第一种方法是使用我尝试的freq=25H,并给了我正确的答案:

import pandas as pd
pd.period_range(start='2016-01-01 10:00', freq = '25H', periods = 10)

,结果是

PeriodIndex(['2016-01-01 10:00', '2016-01-02 11:00', '2016-01-03 12:00',
             '2016-01-04 13:00', '2016-01-05 14:00', '2016-01-06 15:00',
             '2016-01-07 16:00', '2016-01-08 17:00', '2016-01-09 18:00',
             '2016-01-10 19:00'],
            dtype='int64', freq='25H')   

然而,使用freq=1D1H的第二种方式给了我一个相当奇怪的结果:

pd.period_range(start='2016-01-01 10:00', freq = '1D1H', periods = 10)

我得到了

 PeriodIndex(['1971-12-02 01:00', '1971-12-02 02:00', '1971-12-02 03:00',
              '1971-12-02 04:00', '1971-12-02 05:00', '1971-12-02 06:00',
              '1971-12-02 07:00', '1971-12-02 08:00', '1971-12-02 09:00',
              '1971-12-02 10:00'],
            dtype='int64', freq='25H')

所以也许1D1H不是指定频率的有效方法? 1971是怎么出现的? (我还尝试使用1D1H作为date_range()方法的频率,这确实得到了正确的答案。)

pd.date_range('2016-01-01 10:00', freq = '1D1H', periods = 10)
DatetimeIndex(['2016-01-01 10:00:00', '2016-01-02 11:00:00',
               '2016-01-03 12:00:00', '2016-01-04 13:00:00',
               '2016-01-05 14:00:00', '2016-01-06 15:00:00',
               '2016-01-07 16:00:00', '2016-01-08 17:00:00',
               '2016-01-09 18:00:00', '2016-01-10 19:00:00'],
              dtype='datetime64[ns]', freq='25H')

编辑:虽然period_range() freq=1D1H不起作用,但freq=1H1D显示allCourses() { if(this.props.courses){ return this.props.courses.map((course) => { return( <li>{ course.name }</li> ); }); } else { return []; } 。原因尚不清楚。

EDIT2:这已被确定为错误,请参阅下面的答案。

1 个答案:

答案 0 :(得分:5)

已经识别出错误并reported on GitHub

编辑:A fix已合并,将包含在v0.19中。