diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 95e1f8438c704f..b0ea77061a7382 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -342,7 +342,8 @@ def _format_with_header(self, header, **kwargs): def __contains__(self, key): try: res = self.get_loc(key) - return is_scalar(res) or type(res) == slice or np.any(res) + return is_scalar(res) or isinstance(res, slice) or \ + (is_list_like(res) and len(res)) except (KeyError, TypeError, ValueError): return False diff --git a/pandas/tests/indexes/datetimes/test_datetime.py b/pandas/tests/indexes/datetimes/test_datetime.py index 2d55dfff7a8f31..e49ff213fe4ae7 100644 --- a/pandas/tests/indexes/datetimes/test_datetime.py +++ b/pandas/tests/indexes/datetimes/test_datetime.py @@ -368,3 +368,14 @@ def test_factorize_dst(self): def test_unique(self, arr, expected): result = arr.unique() tm.assert_index_equal(result, expected) + + def test_monotone_DTI_indexing_bug(self): + # GH 19362 + + df = pd.DataFrame({'A': [1, 2, 3]}, + index=pd.date_range('20170101', + periods=3)[::-1]) + expected = pd.DataFrame({'A': 1}, + index=pd.date_range('20170103', + periods=1)) + tm.assert_frame_equal(df.loc['2017-01-03'], expected)