大熊猫。分钟酒吧切片。错误“pandas.tslib.OutOfBoundsDatetime”

时间:2017-02-07 21:05:17

标签: pandas dataframe time-series

尝试使用分钟切片Panda Dataframe并收到错误消息“pandas.tslib.OutOfBoundsDatetime”。

我的理解是我可以用格式x ['HH:MM':'HH:MM']来分割熊猫的数据,但不明白出了什么问题:

min_index
Out[237]: 
0    04:00
1    04:01
2    04:04
3    04:05
4    04:07
    dtype: object

df=pd.DataFrame(np.arange(5))

x=df.set_index(pd.to_datetime(min_index))

x
Out[241]: 
                     0
TimeBarStart          
2017-02-07 04:00:00  0
2017-02-07 04:01:00  1
2017-02-07 04:04:00  2
2017-02-07 04:05:00  3
2017-02-07 04:07:00  4

x['04:01' : '04:05']
Traceback (most recent call last):
  File "C:\Users\Chris\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-242-e650c256178d>", line 1, in <module>
    x['04:01' : '04:05']
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\core\frame.py", line 1985, in __getitem__
    indexer = convert_to_index_sliceable(self, key)
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 1758, in convert_to_index_sliceable
    return idx._convert_slice_indexer(key, kind='getitem')
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\indexes\base.py", line 1079, in _convert_slice_indexer
    indexer = self.slice_indexer(start, stop, step, kind=kind)
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\tseries\index.py", line 1511, in slice_indexer
    return Index.slice_indexer(self, start, end, step, kind=kind)
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\indexes\base.py", line 2785, in slice_indexer
    kind=kind)
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\indexes\base.py", line 2964, in slice_locs
    start_slice = self.get_slice_bound(start, 'left', kind)
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\indexes\base.py", line 2903, in get_slice_bound
    label = self._maybe_cast_slice_bound(label, side, kind)
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\tseries\index.py", line 1472, in _maybe_cast_slice_bound
    bounds = self._parsed_string_to_bounds(reso, parsed)
  File "C:\Users\Chris\Anaconda3\lib\site-packages\pandas\tseries\index.py", line 1297, in _parsed_string_to_bounds
    return (Timestamp(st, tz=self.tz),
  File "pandas\tslib.pyx", line 295, in pandas.tslib.Timestamp.__new__ (pandas\tslib.c:9203)
  File "pandas\tslib.pyx", line 1334, in pandas.tslib.convert_to_tsobject (pandas\tslib.c:25690)
  File "pandas\tslib.pyx", line 1562, in pandas.tslib._check_dts_bounds (pandas\tslib.c:29245)
pandas.tslib.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 04:01:00

1 个答案:

答案 0 :(得分:0)

尝试使用between_time()方法:

In [75]: x.between_time('04:01', '04:05')
Out[75]:
                     0
1
2017-02-07 04:01:00  1
2017-02-07 04:04:00  2
2017-02-07 04:05:00  3