title: ValueError: index must be monotonic increasing or decreasing : Adding milliseconds
body: <p>So I had everything working with my data until I added milliseconds to the date/time field.  </p>
  
  <p><strong>selected = selected['2017-02-20 16:10:05':'2017-02-20 16:20:06']</strong> is my statement to filter my data_frame**</p>
  
  <p>The below data works when milliseconds are 0000</p>
  
  <p><a href="https://i.stack.imgur.com/BybOU.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BybOU.png" alt="enter image description here"></a></p>
  
  <p>The below data errors when milliseconds are properly populated</p>
  
  <p><a href="https://i.stack.imgur.com/BL3Lb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BL3Lb.png" alt="enter image description here"></a></p>
  
  <p><strong>Update</strong>:
  I have tried </p>
  
  <pre><code>selected.sort_index()
  selected.ix['2017-02-20 16:10:05':'2017-02-20 16:20:06']
  selected.ix[datetime.date(year=2017,month=2,day=20):datetime.date(year=2017,month=2,day=21)] 
  </code></pre>
  
  <p>TypeError: '>' not supported between instances of 'str' and 'datetime.date'</p>
  
  <p>Then I get the following</p>
  
  <pre><code>ValueError                                Traceback (most recent call last)
  /usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in get_slice_bound(self, label, side, kind)
     3121             try:
  -&gt; 3122                 return self._searchsorted_monotonic(label, side)
     3123             except ValueError:
  
  /usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in _searchsorted_monotonic(self, label, side)
     3087 
  -&gt; 3088         raise ValueError('index must be monotonic increasing or decreasing')
     3089 
  
  ValueError: index must be monotonic increasing or decreasing
  
  During handling of the above exception, another exception occurred:
  
  KeyError                                  Traceback (most recent call last)
  &lt;ipython-input-43-a7bf11322082&gt; in &lt;module&gt;()
       11 selected = selected.query('y_acc &lt; 0.4 and z_acc &gt; -0.4')
       12 selected = selected.query('z_acc &lt; 0.4 and z_acc &gt; -0.4')
  ---&gt; 13 selected = selected['2017-02-20 16:10:05':'2017-02-20 16:20:06']
       14 
       15 #%pylab inline
  
  /usr/local/lib/python3.6/site-packages/pandas/core/frame.py in __getitem__(self, key)
     2045 
     2046         # see if we can slice the rows
  -&gt; 2047         indexer = convert_to_index_sliceable(self, key)
     2048         if indexer is not None:
     2049             return self._getitem_slice(indexer)
  
  /usr/local/lib/python3.6/site-packages/pandas/core/indexing.py in convert_to_index_sliceable(obj, key)
     1772     idx = obj.index
     1773     if isinstance(key, slice):
  -&gt; 1774         return idx._convert_slice_indexer(key, kind='getitem')
     1775 
     1776     elif isinstance(key, compat.string_types):
  
  /usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in _convert_slice_indexer(self, key, kind)
     1236         else:
     1237             try:
  -&gt; 1238                 indexer = self.slice_indexer(start, stop, step, kind=kind)
     1239             except Exception:
     1240                 if is_index_slice:
  
  /usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in slice_indexer(self, start, end, step, kind)
     2995         """
     2996         start_slice, end_slice = self.slice_locs(start, end, step=step,
  -&gt; 2997                                                  kind=kind)
     2998 
     2999         # return a slice
  
  /usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in slice_locs(self, start, end, step, kind)
     3174         start_slice = None
     3175         if start is not None:
  -&gt; 3176             start_slice = self.get_slice_bound(start, 'left', kind)
     3177         if start_slice is None:
     3178             start_slice = 0
  
  /usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in get_slice_bound(self, label, side, kind)
     3123             except ValueError:
     3124                 # raise the original KeyError
  -&gt; 3125                 raise err
     3126 
     3127         if isinstance(slc, np.ndarray):
  
  /usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in get_slice_bound(self, label, side, kind)
     3117         # we need to look up the label
     3118         try:
  -&gt; 3119             slc = self.get_loc(label)
     3120         except KeyError as err:
     3121             try:
  
  /usr/local/lib/python3.6/site-packages/pandas/indexes/base.py in get_loc(self, key, method, tolerance)
     2134                 return self._engine.get_loc(key)
     2135             except KeyError:
  -&gt; 2136                 return self._engine.get_loc(self._maybe_cast_indexer(key))
     2137 
     2138         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
  
  pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4433)()
  
  pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4279)()
  
  pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13742)()
  
  pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13696)()
  
  KeyError: '2017-02-20 16:10:05'
  </code></pre>