Skip to content

Commit ec85e03

Browse files
authored
TST/REF: collect mask tests (pandas-dev#44892)
1 parent e999029 commit ec85e03

File tree

5 files changed

+49
-55
lines changed

5 files changed

+49
-55
lines changed

pandas/tests/indexes/multi/test_reshape.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ def test_insert(idx):
7171
tm.assert_frame_equal(left, right, check_dtype=False)
7272
tm.assert_series_equal(ts, right["3rd"])
7373

74+
75+
def test_insert2():
7476
# GH9250
7577
idx = (
7678
[("test1", i) for i in range(5)]

pandas/tests/indexing/test_indexing.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -712,8 +712,8 @@ def test_str_label_slicing_with_negative_step(self):
712712
ser, SLC[idx[9] : idx[13] : -1], SLC[:0]
713713
)
714714

715-
def test_slice_with_zero_step_raises(self, indexer_sl, frame_or_series):
716-
obj = frame_or_series(np.arange(20), index=_mklbl("A", 20))
715+
def test_slice_with_zero_step_raises(self, index, indexer_sl, frame_or_series):
716+
obj = frame_or_series(np.arange(len(index)), index=index)
717717
with pytest.raises(ValueError, match="slice step cannot be zero"):
718718
indexer_sl(obj)[::0]
719719

pandas/tests/series/indexing/test_indexing.py

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -262,48 +262,6 @@ def test_preserve_refs(datetime_series):
262262
assert not np.isnan(datetime_series[10])
263263

264264

265-
def test_cast_on_putmask():
266-
# GH 2746
267-
268-
# need to upcast
269-
s = Series([1, 2], index=[1, 2], dtype="int64")
270-
s[[True, False]] = Series([0], index=[1], dtype="int64")
271-
expected = Series([0, 2], index=[1, 2], dtype="int64")
272-
273-
tm.assert_series_equal(s, expected)
274-
275-
276-
def test_type_promote_putmask():
277-
# GH8387: test that changing types does not break alignment
278-
ts = Series(np.random.randn(100), index=np.arange(100, 0, -1)).round(5)
279-
left, mask = ts.copy(), ts > 0
280-
right = ts[mask].copy().map(str)
281-
left[mask] = right
282-
tm.assert_series_equal(left, ts.map(lambda t: str(t) if t > 0 else t))
283-
284-
285-
def test_setitem_mask_promote_strs():
286-
287-
ser = Series([0, 1, 2, 0])
288-
mask = ser > 0
289-
ser2 = ser[mask].map(str)
290-
ser[mask] = ser2
291-
292-
expected = Series([0, "1", "2", 0])
293-
tm.assert_series_equal(ser, expected)
294-
295-
296-
def test_setitem_mask_promote():
297-
298-
ser = Series([0, "foo", "bar", 0])
299-
mask = Series([False, True, True, False])
300-
ser2 = ser[mask]
301-
ser[mask] = ser2
302-
303-
expected = Series([0, "foo", "bar", 0])
304-
tm.assert_series_equal(ser, expected)
305-
306-
307265
def test_multilevel_preserve_name(lexsorted_two_level_string_multiindex, indexer_sl):
308266
index = lexsorted_two_level_string_multiindex
309267
ser = Series(np.random.randn(len(index)), index=index, name="sth")
@@ -317,13 +275,6 @@ def test_multilevel_preserve_name(lexsorted_two_level_string_multiindex, indexer
317275
"""
318276

319277

320-
def test_slice_with_zero_step_raises(index, frame_or_series, indexer_sli):
321-
ts = frame_or_series(np.arange(len(index)), index=index)
322-
323-
with pytest.raises(ValueError, match="slice step cannot be zero"):
324-
indexer_sli(ts)[::0]
325-
326-
327278
@pytest.mark.parametrize(
328279
"index",
329280
[

pandas/tests/series/indexing/test_mask.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,19 @@ def test_mask():
3737
with pytest.raises(ValueError, match=msg):
3838
s.mask(cond[:3].values, -s)
3939

40+
41+
def test_mask_casts():
4042
# dtype changes
41-
s = Series([1, 2, 3, 4])
42-
result = s.mask(s > 2, np.nan)
43+
ser = Series([1, 2, 3, 4])
44+
result = ser.mask(ser > 2, np.nan)
4345
expected = Series([1, 2, np.nan, np.nan])
4446
tm.assert_series_equal(result, expected)
4547

48+
49+
def test_mask_casts2():
4650
# see gh-21891
47-
s = Series([1, 2])
48-
res = s.mask([True, False])
51+
ser = Series([1, 2])
52+
res = ser.mask([True, False])
4953

5054
exp = Series([np.nan, 2])
5155
tm.assert_series_equal(res, exp)

pandas/tests/series/indexing/test_setitem.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,43 @@ def test_setitem_multiindex_slice(self, indexer_sli):
234234

235235

236236
class TestSetitemBooleanMask:
237+
def test_setitem_mask_cast(self):
238+
# GH#2746
239+
# need to upcast
240+
ser = Series([1, 2], index=[1, 2], dtype="int64")
241+
ser[[True, False]] = Series([0], index=[1], dtype="int64")
242+
expected = Series([0, 2], index=[1, 2], dtype="int64")
243+
244+
tm.assert_series_equal(ser, expected)
245+
246+
def test_setitem_mask_align_and_promote(self):
247+
# GH#8387: test that changing types does not break alignment
248+
ts = Series(np.random.randn(100), index=np.arange(100, 0, -1)).round(5)
249+
mask = ts > 0
250+
left = ts.copy()
251+
right = ts[mask].copy().map(str)
252+
left[mask] = right
253+
expected = ts.map(lambda t: str(t) if t > 0 else t)
254+
tm.assert_series_equal(left, expected)
255+
256+
def test_setitem_mask_promote_strs(self):
257+
ser = Series([0, 1, 2, 0])
258+
mask = ser > 0
259+
ser2 = ser[mask].map(str)
260+
ser[mask] = ser2
261+
262+
expected = Series([0, "1", "2", 0])
263+
tm.assert_series_equal(ser, expected)
264+
265+
def test_setitem_mask_promote(self):
266+
ser = Series([0, "foo", "bar", 0])
267+
mask = Series([False, True, True, False])
268+
ser2 = ser[mask]
269+
ser[mask] = ser2
270+
271+
expected = Series([0, "foo", "bar", 0])
272+
tm.assert_series_equal(ser, expected)
273+
237274
def test_setitem_boolean(self, string_series):
238275
mask = string_series > string_series.median()
239276

0 commit comments

Comments
 (0)