From 5b68ad4168ce1605ce48fb9824bfe2d95e96b576 Mon Sep 17 00:00:00 2001 From: gfyoung Date: Wed, 17 Oct 2018 15:17:32 -0700 Subject: [PATCH] TST/CLN: Parameterize test in sparse/test_indexing --- pandas/tests/sparse/test_indexing.py | 61 +++++++++++++--------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/pandas/tests/sparse/test_indexing.py b/pandas/tests/sparse/test_indexing.py index 7c7e450c966bf..1ecb1f4e8de58 100644 --- a/pandas/tests/sparse/test_indexing.py +++ b/pandas/tests/sparse/test_indexing.py @@ -424,38 +424,35 @@ def test_reindex_nearest(self): expected = pd.Series([0, np.nan, np.nan, 2], target).to_sparse() tm.assert_sp_series_equal(expected, actual) - def tests_indexing_with_sparse(self): - # GH 13985 - - for kind in ['integer', 'block']: - for fill in [True, False, np.nan]: - arr = pd.SparseArray([1, 2, 3], kind=kind) - indexer = pd.SparseArray([True, False, True], fill_value=fill, - dtype=bool) - - tm.assert_sp_array_equal(pd.SparseArray([1, 3], kind=kind), - arr[indexer],) - - s = pd.SparseSeries(arr, index=['a', 'b', 'c'], - dtype=np.float64) - - exp = pd.SparseSeries( - [1, 3], index=['a', 'c'], - dtype=SparseDtype(np.float64, s.fill_value), - kind=kind - ) - tm.assert_sp_series_equal(s[indexer], exp) - tm.assert_sp_series_equal(s.loc[indexer], exp) - tm.assert_sp_series_equal(s.iloc[indexer], exp) - - indexer = pd.SparseSeries(indexer, index=['a', 'b', 'c']) - tm.assert_sp_series_equal(s[indexer], exp) - tm.assert_sp_series_equal(s.loc[indexer], exp) - - msg = ("iLocation based boolean indexing cannot use an " - "indexable as a mask") - with tm.assert_raises_regex(ValueError, msg): - s.iloc[indexer] + @pytest.mark.parametrize("kind", ["integer", "block"]) + @pytest.mark.parametrize("fill", [True, False, np.nan]) + def tests_indexing_with_sparse(self, kind, fill): + # see gh-13985 + arr = pd.SparseArray([1, 2, 3], kind=kind) + indexer = pd.SparseArray([True, False, True], + fill_value=fill, + dtype=bool) + + expected = arr[indexer] + result = pd.SparseArray([1, 3], kind=kind) + tm.assert_sp_array_equal(result, expected) + + s = pd.SparseSeries(arr, index=["a", "b", "c"], dtype=np.float64) + expected = pd.SparseSeries([1, 3], index=["a", "c"], kind=kind, + dtype=SparseDtype(np.float64, s.fill_value)) + + tm.assert_sp_series_equal(s[indexer], expected) + tm.assert_sp_series_equal(s.loc[indexer], expected) + tm.assert_sp_series_equal(s.iloc[indexer], expected) + + indexer = pd.SparseSeries(indexer, index=["a", "b", "c"]) + tm.assert_sp_series_equal(s[indexer], expected) + tm.assert_sp_series_equal(s.loc[indexer], expected) + + msg = ("iLocation based boolean indexing cannot " + "use an indexable as a mask") + with tm.assert_raises_regex(ValueError, msg): + s.iloc[indexer] class TestSparseSeriesMultiIndexing(TestSparseSeriesIndexing):