From cbbf0044d5193109a9520e34717cd56c7f5470e5 Mon Sep 17 00:00:00 2001 From: jreback Date: Thu, 23 Jan 2014 16:27:28 -0500 Subject: [PATCH] BUG: Regression in .get(None) from 0.12 (GH5652) --- doc/source/release.rst | 1 + pandas/core/generic.py | 2 +- pandas/tests/test_frame.py | 5 +++++ pandas/tests/test_series.py | 6 ++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/source/release.rst b/doc/source/release.rst index e1325c676340e..4ed792afc0bcf 100644 --- a/doc/source/release.rst +++ b/doc/source/release.rst @@ -139,6 +139,7 @@ Bug Fixes - Possible segfault when chained indexing with an object array under numpy 1.7.1 (:issue:`6016`) - Bug in setting using fancy indexing a single element with a non-scalar (e.g. a list), (:issue:`6043`) + - Regression in ``.get(None)`` indexing from 0.12 (:issue:`5652`) pandas 0.13.0 ------------- diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 63454d32a5fa1..bd53e1a35e166 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -981,7 +981,7 @@ def get(self, key, default=None): """ try: return self[key] - except KeyError: + except (KeyError, ValueError): return default def __getitem__(self, item): diff --git a/pandas/tests/test_frame.py b/pandas/tests/test_frame.py index f122a88fe7a25..5b821000fe96e 100644 --- a/pandas/tests/test_frame.py +++ b/pandas/tests/test_frame.py @@ -147,6 +147,11 @@ def test_get(self): self.assert_(self.frame.get('foo') is None) assert_series_equal(self.frame.get('foo', self.frame['B']), self.frame['B']) + # None + # GH 5652 + for df in [DataFrame(), DataFrame(columns=list('AB')), DataFrame(columns=list('AB'),index=range(3)) ]: + result = df.get(None) + self.assert_(result is None) def test_getitem_iterator(self): idx = iter(['A', 'B', 'C']) diff --git a/pandas/tests/test_series.py b/pandas/tests/test_series.py index 6df7028092a7a..675852027ce6e 100644 --- a/pandas/tests/test_series.py +++ b/pandas/tests/test_series.py @@ -724,6 +724,12 @@ def test_getitem_get(self): d = self.ts.index[0] - datetools.bday self.assertRaises(KeyError, self.ts.__getitem__, d) + # None + # GH 5652 + for s in [Series(), Series(index=list('abc'))]: + result = s.get(None) + self.assert_(result is None) + def test_iget(self): s = Series(np.random.randn(10), index=lrange(0, 20, 2)) for i in range(len(s)):