From a4d587d2a17e5524e4966817b4889eab6c826186 Mon Sep 17 00:00:00 2001 From: jreback Date: Tue, 8 Oct 2013 13:01:47 -0400 Subject: [PATCH] API/PERF: restore auto-boxing on isnull/notnull for Series (w/o copy) preservers perf gains --- pandas/core/common.py | 10 ++++++++++ pandas/tests/test_common.py | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pandas/core/common.py b/pandas/core/common.py index 009de0395f361..a417e00af5d3e 100644 --- a/pandas/core/common.py +++ b/pandas/core/common.py @@ -202,6 +202,11 @@ def _isnull_ndarraylike(obj): else: result = np.isnan(values) + # box + if isinstance(obj, ABCSeries): + from pandas import Series + result = Series(result, index=obj.index, name=obj.name, copy=False) + return result @@ -226,6 +231,11 @@ def _isnull_ndarraylike_old(obj): else: result = -np.isfinite(values) + # box + if isinstance(obj, ABCSeries): + from pandas import Series + result = Series(result, index=obj.index, name=obj.name, copy=False) + return result diff --git a/pandas/tests/test_common.py b/pandas/tests/test_common.py index 5efc22ef927d5..68195fb3d6ec5 100644 --- a/pandas/tests/test_common.py +++ b/pandas/tests/test_common.py @@ -66,7 +66,7 @@ def test_notnull(): with cf.option_context("mode.use_inf_as_null", False): for s in [tm.makeFloatSeries(),tm.makeStringSeries(), tm.makeObjectSeries(),tm.makeTimeSeries(),tm.makePeriodSeries()]: - assert(isinstance(isnull(s), np.ndarray)) + assert(isinstance(isnull(s), Series)) def test_isnull(): assert not isnull(1.) @@ -77,7 +77,7 @@ def test_isnull(): for s in [tm.makeFloatSeries(),tm.makeStringSeries(), tm.makeObjectSeries(),tm.makeTimeSeries(),tm.makePeriodSeries()]: - assert(isinstance(isnull(s), np.ndarray)) + assert(isinstance(isnull(s), Series)) # call on DataFrame df = DataFrame(np.random.randn(10, 5))