2014-06-25 17 views
5

Khi sử dụng gấu trúc (v 13.1.) DATE_RANGE chức năng tôi nhận được hành vi không phù hợp về việc có hay không phải là 'kết thúc' nằm bên trong phạm vi trả về:Pandas DATE_RANGE hành vi không phù hợp

In [1]: pd.date_range(start='2014-06-09 15:36:55', 
         end='2014-06-09 15:37:46', 
         freq='20s') 
Out[1]: [2014-06-09 15:36:55, ..., 2014-06-09 15:37:55] 

In [2]: pd.date_range(start='2014-06-09 15:36:55', 
         end='2014-06-09 15:37:46', 
         freq='10s') 
Out[2]: [2014-06-09 15:36:55, ..., 2014-06-09 15:37:45] 

Lưu ý rằng trong trường hợp đầu tiên, lần cuối cùng sau đó là 'kết thúc' được chỉ định, trong khi trong trường hợp thứ hai thời gian qua nhỏ hơn. Bất cứ ai có thể giải thích điều này?

+1

Tôi đoán rằng nó làm tròn đến ranh giới tần số gần nhất. 46 gần với 55 hơn 35 (20 giây trước), nhưng gần 45 đến 55. Tuy nhiên, tôi đồng ý rằng đó là hành vi khó hiểu. Nó có thể là giá trị yêu cầu trên danh sách gửi thư gấu trúc và/hoặc nâng cao một lỗi trong tracker. – BrenBarn

+1

Đoán của tôi là nó trong khi hiện tại

Trả lời

1

Tôi tin rằng sự cố này đã được khắc phục trong một số bản phát hành. Hiện hành vi date_range nhất quán, luôn bao gồm startkết thúc của DatetimeIndex luôn là < = end. Và định dạng đầu ra đã trở thành khá quá.

mã sau đây được sử dụng gấu trúc 0.17.0:

In [1]: import pandas as pd 

In [2]: pd.date_range(start='2014-06-09 15:36:55', 
    ...:      end='2014-06-09 15:37:46', 
    ...:      freq='20s') 
Out[2]: 
DatetimeIndex(['2014-06-09 15:36:55', '2014-06-09 15:37:15', 
       '2014-06-09 15:37:35'], 
       dtype='datetime64[ns]', freq='20S') 

In [3]: pd.date_range(start='2014-06-09 15:36:55', 
         end='2014-06-09 15:37:46', 
         freq='10s') 
Out[3]: 
DatetimeIndex(['2014-06-09 15:36:55', '2014-06-09 15:37:05', 
       '2014-06-09 15:37:15', '2014-06-09 15:37:25', 
       '2014-06-09 15:37:35', '2014-06-09 15:37:45'], 
       dtype='datetime64[ns]', freq='10S') 

In [4]: pd.date_range(start='2014-06-09 15:36:55', 
         end='2014-06-09 15:37:46', 
         freq='15s') 
Out[4]: 
DatetimeIndex(['2014-06-09 15:36:55', '2014-06-09 15:37:10', 
       '2014-06-09 15:37:25', '2014-06-09 15:37:40'], 
       dtype='datetime64[ns]', freq='15S') 

In [5]: pd.date_range(start='2014-06-09 15:36:55', 
         end='2014-06-09 15:37:46', 
         freq='1s') 
Out[5]: 
DatetimeIndex(['2014-06-09 15:36:55', '2014-06-09 15:36:56', 
        ......     ...... 
       '2014-06-09 15:37:45', '2014-06-09 15:37:46'], 
       dtype='datetime64[ns]', freq='S') 

Lưu ý rằng khi kết thúc DatetimeIndex không bao giờ vượt quá end ngày date_range.

Các vấn đề liên quan