@@ -424,38 +424,35 @@ def test_reindex_nearest(self):
424424 expected = pd .Series ([0 , np .nan , np .nan , 2 ], target ).to_sparse ()
425425 tm .assert_sp_series_equal (expected , actual )
426426
427- def tests_indexing_with_sparse (self ):
428- # GH 13985
429-
430- for kind in ['integer' , 'block' ]:
431- for fill in [True , False , np .nan ]:
432- arr = pd .SparseArray ([1 , 2 , 3 ], kind = kind )
433- indexer = pd .SparseArray ([True , False , True ], fill_value = fill ,
434- dtype = bool )
435-
436- tm .assert_sp_array_equal (pd .SparseArray ([1 , 3 ], kind = kind ),
437- arr [indexer ],)
438-
439- s = pd .SparseSeries (arr , index = ['a' , 'b' , 'c' ],
440- dtype = np .float64 )
441-
442- exp = pd .SparseSeries (
443- [1 , 3 ], index = ['a' , 'c' ],
444- dtype = SparseDtype (np .float64 , s .fill_value ),
445- kind = kind
446- )
447- tm .assert_sp_series_equal (s [indexer ], exp )
448- tm .assert_sp_series_equal (s .loc [indexer ], exp )
449- tm .assert_sp_series_equal (s .iloc [indexer ], exp )
450-
451- indexer = pd .SparseSeries (indexer , index = ['a' , 'b' , 'c' ])
452- tm .assert_sp_series_equal (s [indexer ], exp )
453- tm .assert_sp_series_equal (s .loc [indexer ], exp )
454-
455- msg = ("iLocation based boolean indexing cannot use an "
456- "indexable as a mask" )
457- with tm .assert_raises_regex (ValueError , msg ):
458- s .iloc [indexer ]
427+ @pytest .mark .parametrize ("kind" , ["integer" , "block" ])
428+ @pytest .mark .parametrize ("fill" , [True , False , np .nan ])
429+ def tests_indexing_with_sparse (self , kind , fill ):
430+ # see gh-13985
431+ arr = pd .SparseArray ([1 , 2 , 3 ], kind = kind )
432+ indexer = pd .SparseArray ([True , False , True ],
433+ fill_value = fill ,
434+ dtype = bool )
435+
436+ expected = arr [indexer ]
437+ result = pd .SparseArray ([1 , 3 ], kind = kind )
438+ tm .assert_sp_array_equal (result , expected )
439+
440+ s = pd .SparseSeries (arr , index = ["a" , "b" , "c" ], dtype = np .float64 )
441+ expected = pd .SparseSeries ([1 , 3 ], index = ["a" , "c" ], kind = kind ,
442+ dtype = SparseDtype (np .float64 , s .fill_value ))
443+
444+ tm .assert_sp_series_equal (s [indexer ], expected )
445+ tm .assert_sp_series_equal (s .loc [indexer ], expected )
446+ tm .assert_sp_series_equal (s .iloc [indexer ], expected )
447+
448+ indexer = pd .SparseSeries (indexer , index = ["a" , "b" , "c" ])
449+ tm .assert_sp_series_equal (s [indexer ], expected )
450+ tm .assert_sp_series_equal (s .loc [indexer ], expected )
451+
452+ msg = ("iLocation based boolean indexing cannot "
453+ "use an indexable as a mask" )
454+ with tm .assert_raises_regex (ValueError , msg ):
455+ s .iloc [indexer ]
459456
460457
461458class TestSparseSeriesMultiIndexing (TestSparseSeriesIndexing ):
0 commit comments