diff --git a/doc/source/v0.15.0.txt b/doc/source/v0.15.0.txt index d776848de40d0..116608e5f8817 100644 --- a/doc/source/v0.15.0.txt +++ b/doc/source/v0.15.0.txt @@ -152,6 +152,7 @@ There are no experimental changes in 0.15.0 Bug Fixes ~~~~~~~~~ +- Bug in ``get`` where an ``IndexError`` would not cause the default value to be returned (:issue:`7725`) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 59a457229d512..8daad2e76fae0 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -1038,7 +1038,7 @@ def get(self, key, default=None): """ try: return self[key] - except (KeyError, ValueError): + except (KeyError, ValueError, IndexError): return default def __getitem__(self, item): diff --git a/pandas/tests/test_generic.py b/pandas/tests/test_generic.py index 044d4054755ba..43ac8275aeb45 100644 --- a/pandas/tests/test_generic.py +++ b/pandas/tests/test_generic.py @@ -123,6 +123,23 @@ def test_get_numeric_data(self): # _get_numeric_data is includes _get_bool_data, so can't test for non-inclusion + def test_get_default(self): + + # GH 7725 + d0 = "a", "b", "c", "d" + d1 = np.arange(4, dtype='int64') + others = "e", 10 + + for data, index in ((d0, d1), (d1, d0)): + s = Series(data, index=index) + for i,d in zip(index, data): + self.assertEqual(s.get(i), d) + self.assertEqual(s.get(i, d), d) + self.assertEqual(s.get(i, "z"), d) + for other in others: + self.assertEqual(s.get(other, "z"), "z") + self.assertEqual(s.get(other, other), other) + def test_nonzero(self): # GH 4633