当使用pandas(v.13.1)date_range函数时,我得到关于'end'是否在返回范围内的不一致行为:
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]
Run Code Online (Sandbox Code Playgroud)
和
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]
Run Code Online (Sandbox Code Playgroud)
请注意,在第一种情况下,最后一次是指定的'end',而在第二种情况下,最后一次是较小的.有谁能解释一下?
我相信这个问题已经在某些版本中得到解决。现在date_range行为是一致的,始终包括start和总是 <=的结尾DatetimeIndexend。输出格式也变得漂亮了。
以下代码使用 pandas 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')
Run Code Online (Sandbox Code Playgroud)
请注意, 的结尾DatetimeIndex永远不会超过end的日期date_range。