Skip to content

Commit 2f73c7a

Browse files
authored
CLN: Remove some duplicated tests and parametrize (#39960)
* CLN: Remove some duplicated tests and parametrize * Clean further * Add comments and refactor test * Use fixture
1 parent 7ca1aa8 commit 2f73c7a

File tree

4 files changed

+60
-199
lines changed

4 files changed

+60
-199
lines changed

pandas/tests/indexing/test_floats.py

+26-77
Original file line numberDiff line numberDiff line change
@@ -498,122 +498,71 @@ def test_floating_index_doc_example(self):
498498
assert s.loc[3] == 2
499499
assert s.iloc[3] == 3
500500

501-
def test_floating_misc(self):
501+
def test_floating_misc(self, indexer_sl):
502502

503503
# related 236
504504
# scalar/slicing of a float index
505505
s = Series(np.arange(5), index=np.arange(5) * 2.5, dtype=np.int64)
506506

507507
# label based slicing
508-
result1 = s[1.0:3.0]
509-
result2 = s.loc[1.0:3.0]
510-
result3 = s.loc[1.0:3.0]
511-
tm.assert_series_equal(result1, result2)
512-
tm.assert_series_equal(result1, result3)
508+
result = indexer_sl(s)[1.0:3.0]
509+
expected = Series(1, index=[2.5])
510+
tm.assert_series_equal(result, expected)
513511

514512
# exact indexing when found
515-
result1 = s[5.0]
516-
result2 = s.loc[5.0]
517-
result3 = s.loc[5.0]
518-
assert result1 == result2
519-
assert result1 == result3
520513

521-
result1 = s[5]
522-
result2 = s.loc[5]
523-
result3 = s.loc[5]
524-
assert result1 == result2
525-
assert result1 == result3
514+
result = indexer_sl(s)[5.0]
515+
assert result == 2
526516

527-
assert s[5.0] == s[5]
517+
result = indexer_sl(s)[5]
518+
assert result == 2
528519

529520
# value not found (and no fallbacking at all)
530521

531522
# scalar integers
532523
with pytest.raises(KeyError, match=r"^4$"):
533-
s.loc[4]
534-
with pytest.raises(KeyError, match=r"^4$"):
535-
s.loc[4]
536-
with pytest.raises(KeyError, match=r"^4$"):
537-
s[4]
524+
indexer_sl(s)[4]
538525

539526
# fancy floats/integers create the correct entry (as nan)
540527
# fancy tests
541528
expected = Series([2, 0], index=Float64Index([5.0, 0.0]))
542529
for fancy_idx in [[5.0, 0.0], np.array([5.0, 0.0])]: # float
543-
tm.assert_series_equal(s[fancy_idx], expected)
544-
tm.assert_series_equal(s.loc[fancy_idx], expected)
545-
tm.assert_series_equal(s.loc[fancy_idx], expected)
530+
tm.assert_series_equal(indexer_sl(s)[fancy_idx], expected)
546531

547532
expected = Series([2, 0], index=Index([5, 0], dtype="int64"))
548533
for fancy_idx in [[5, 0], np.array([5, 0])]: # int
549-
tm.assert_series_equal(s[fancy_idx], expected)
550-
tm.assert_series_equal(s.loc[fancy_idx], expected)
551-
tm.assert_series_equal(s.loc[fancy_idx], expected)
534+
tm.assert_series_equal(indexer_sl(s)[fancy_idx], expected)
552535

553536
# all should return the same as we are slicing 'the same'
554-
result1 = s.loc[2:5]
555-
result2 = s.loc[2.0:5.0]
556-
result3 = s.loc[2.0:5]
557-
result4 = s.loc[2.1:5]
558-
tm.assert_series_equal(result1, result2)
559-
tm.assert_series_equal(result1, result3)
560-
tm.assert_series_equal(result1, result4)
561-
562-
# previously this did fallback indexing
563-
result1 = s[2:5]
564-
result2 = s[2.0:5.0]
565-
result3 = s[2.0:5]
566-
result4 = s[2.1:5]
537+
result1 = indexer_sl(s)[2:5]
538+
result2 = indexer_sl(s)[2.0:5.0]
539+
result3 = indexer_sl(s)[2.0:5]
540+
result4 = indexer_sl(s)[2.1:5]
567541
tm.assert_series_equal(result1, result2)
568542
tm.assert_series_equal(result1, result3)
569543
tm.assert_series_equal(result1, result4)
570544

571-
result1 = s.loc[2:5]
572-
result2 = s.loc[2.0:5.0]
573-
result3 = s.loc[2.0:5]
574-
result4 = s.loc[2.1:5]
575-
tm.assert_series_equal(result1, result2)
576-
tm.assert_series_equal(result1, result3)
577-
tm.assert_series_equal(result1, result4)
545+
expected = Series([1, 2], index=[2.5, 5.0])
546+
result = indexer_sl(s)[2:5]
578547

579-
# combined test
580-
result1 = s.loc[2:5]
581-
result2 = s.loc[2:5]
582-
result3 = s[2:5]
583-
584-
tm.assert_series_equal(result1, result2)
585-
tm.assert_series_equal(result1, result3)
548+
tm.assert_series_equal(result, expected)
586549

587550
# list selection
588-
result1 = s[[0.0, 5, 10]]
589-
result2 = s.loc[[0.0, 5, 10]]
590-
result3 = s.loc[[0.0, 5, 10]]
591-
result4 = s.iloc[[0, 2, 4]]
551+
result1 = indexer_sl(s)[[0.0, 5, 10]]
552+
result2 = s.iloc[[0, 2, 4]]
592553
tm.assert_series_equal(result1, result2)
593-
tm.assert_series_equal(result1, result3)
594-
tm.assert_series_equal(result1, result4)
595554

596555
with pytest.raises(KeyError, match="with any missing labels"):
597-
s[[1.6, 5, 10]]
598-
with pytest.raises(KeyError, match="with any missing labels"):
599-
s.loc[[1.6, 5, 10]]
556+
indexer_sl(s)[[1.6, 5, 10]]
600557

601558
with pytest.raises(KeyError, match="with any missing labels"):
602-
s[[0, 1, 2]]
603-
with pytest.raises(KeyError, match="with any missing labels"):
604-
s.loc[[0, 1, 2]]
559+
indexer_sl(s)[[0, 1, 2]]
605560

606-
result1 = s.loc[[2.5, 5]]
607-
result2 = s.loc[[2.5, 5]]
608-
tm.assert_series_equal(result1, result2)
609-
tm.assert_series_equal(result1, Series([1, 2], index=[2.5, 5.0]))
561+
result = indexer_sl(s)[[2.5, 5]]
562+
tm.assert_series_equal(result, Series([1, 2], index=[2.5, 5.0]))
610563

611-
result1 = s[[2.5]]
612-
result2 = s.loc[[2.5]]
613-
result3 = s.loc[[2.5]]
614-
tm.assert_series_equal(result1, result2)
615-
tm.assert_series_equal(result1, result3)
616-
tm.assert_series_equal(result1, Series([1], index=[2.5]))
564+
result = indexer_sl(s)[[2.5]]
565+
tm.assert_series_equal(result, Series([1], index=[2.5]))
617566

618567
def test_floating_tuples(self):
619568
# see gh-13509

pandas/tests/indexing/test_iloc.py

+4-21
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,11 @@
3535

3636

3737
class TestiLoc(Base):
38-
def test_iloc_getitem_int(self):
39-
# integer
38+
@pytest.mark.parametrize("key", [2, -1, [0, 1, 2]])
39+
def test_iloc_getitem_int_and_list_int(self, key):
4040
self.check_result(
4141
"iloc",
42-
2,
43-
typs=["labels", "mixed", "ts", "floats", "empty"],
44-
fails=IndexError,
45-
)
46-
47-
def test_iloc_getitem_neg_int(self):
48-
# neg integer
49-
self.check_result(
50-
"iloc",
51-
-1,
52-
typs=["labels", "mixed", "ts", "floats", "empty"],
53-
fails=IndexError,
54-
)
55-
56-
def test_iloc_getitem_list_int(self):
57-
self.check_result(
58-
"iloc",
59-
[0, 1, 2],
42+
key,
6043
typs=["labels", "mixed", "ts", "floats", "empty"],
6144
fails=IndexError,
6245
)
@@ -371,7 +354,7 @@ def test_iloc_getitem_bool_diff_len(self, index):
371354
s = Series([1, 2, 3])
372355
msg = f"Boolean index has wrong length: {len(index)} instead of {len(s)}"
373356
with pytest.raises(IndexError, match=msg):
374-
_ = s.iloc[index]
357+
s.iloc[index]
375358

376359
def test_iloc_getitem_slice(self):
377360
df = DataFrame(

pandas/tests/indexing/test_indexing.py

+3-11
Original file line numberDiff line numberDiff line change
@@ -266,14 +266,11 @@ def test_dups_fancy_indexing_only_missing_label(self):
266266

267267
# ToDo: check_index_type can be True after GH 11497
268268

269-
def test_dups_fancy_indexing_missing_label(self):
269+
@pytest.mark.parametrize("vals", [[0, 1, 2], list("abc")])
270+
def test_dups_fancy_indexing_missing_label(self, vals):
270271

271272
# GH 4619; duplicate indexer with missing label
272-
df = DataFrame({"A": [0, 1, 2]})
273-
with pytest.raises(KeyError, match="with any missing labels"):
274-
df.loc[[0, 8, 0]]
275-
276-
df = DataFrame({"A": list("abc")})
273+
df = DataFrame({"A": vals})
277274
with pytest.raises(KeyError, match="with any missing labels"):
278275
df.loc[[0, 8, 0]]
279276

@@ -455,9 +452,6 @@ def test_multi_assign(self):
455452
df2.loc[mask, cols] = dft.loc[mask, cols]
456453
tm.assert_frame_equal(df2, expected)
457454

458-
df2.loc[mask, cols] = dft.loc[mask, cols]
459-
tm.assert_frame_equal(df2, expected)
460-
461455
# with an ndarray on rhs
462456
# coerces to float64 because values has float64 dtype
463457
# GH 14001
@@ -472,8 +466,6 @@ def test_multi_assign(self):
472466
df2 = df.copy()
473467
df2.loc[mask, cols] = dft.loc[mask, cols].values
474468
tm.assert_frame_equal(df2, expected)
475-
df2.loc[mask, cols] = dft.loc[mask, cols].values
476-
tm.assert_frame_equal(df2, expected)
477469

478470
def test_multi_assign_broadcasting_rhs(self):
479471
# broadcasting on the rhs is required

0 commit comments

Comments
 (0)