Skip to content

Commit 4ca9dee

Browse files
committed
TST/CLN: series.duplicated; parametrisation; fix warning
1 parent 56b2f0e commit 4ca9dee

File tree

1 file changed

+44
-81
lines changed

1 file changed

+44
-81
lines changed

pandas/tests/series/test_analytics.py

+44-81
Original file line numberDiff line numberDiff line change
@@ -956,94 +956,56 @@ def test_unique(self):
956956
check_dtype=False)
957957

958958
@pytest.mark.parametrize(
959-
"tc1, tc2",
959+
'keep, expected',
960960
[
961-
(
962-
Series([1, 2, 3, 3], dtype=np.dtype('int_')),
963-
Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype('int_'))
964-
),
965-
(
966-
Series([1, 2, 3, 3], dtype=np.dtype('uint')),
967-
Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype('uint'))
968-
),
969-
(
970-
Series([1, 2, 3, 3], dtype=np.dtype('float_')),
971-
Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype('float_'))
972-
),
973-
(
974-
Series([1, 2, 3, 3], dtype=np.dtype('unicode_')),
975-
Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype('unicode_'))
976-
)
977-
]
978-
)
979-
def test_drop_duplicates_non_bool(self, tc1, tc2):
980-
# Test case 1
981-
expected = Series([False, False, False, True])
982-
assert_series_equal(tc1.duplicated(), expected)
983-
assert_series_equal(tc1.drop_duplicates(), tc1[~expected])
984-
sc = tc1.copy()
985-
sc.drop_duplicates(inplace=True)
986-
assert_series_equal(sc, tc1[~expected])
987-
988-
expected = Series([False, False, True, False])
989-
assert_series_equal(tc1.duplicated(keep='last'), expected)
990-
assert_series_equal(tc1.drop_duplicates(keep='last'), tc1[~expected])
991-
sc = tc1.copy()
992-
sc.drop_duplicates(keep='last', inplace=True)
993-
assert_series_equal(sc, tc1[~expected])
994-
995-
expected = Series([False, False, True, True])
996-
assert_series_equal(tc1.duplicated(keep=False), expected)
997-
assert_series_equal(tc1.drop_duplicates(keep=False), tc1[~expected])
998-
sc = tc1.copy()
999-
sc.drop_duplicates(keep=False, inplace=True)
1000-
assert_series_equal(sc, tc1[~expected])
1001-
1002-
# Test case 2
1003-
expected = Series([False, False, False, False, True, True, False])
1004-
assert_series_equal(tc2.duplicated(), expected)
1005-
assert_series_equal(tc2.drop_duplicates(), tc2[~expected])
1006-
sc = tc2.copy()
1007-
sc.drop_duplicates(inplace=True)
1008-
assert_series_equal(sc, tc2[~expected])
1009-
1010-
expected = Series([False, True, True, False, False, False, False])
1011-
assert_series_equal(tc2.duplicated(keep='last'), expected)
1012-
assert_series_equal(tc2.drop_duplicates(keep='last'), tc2[~expected])
1013-
sc = tc2.copy()
1014-
sc.drop_duplicates(keep='last', inplace=True)
1015-
assert_series_equal(sc, tc2[~expected])
1016-
1017-
expected = Series([False, True, True, False, True, True, False])
1018-
assert_series_equal(tc2.duplicated(keep=False), expected)
1019-
assert_series_equal(tc2.drop_duplicates(keep=False), tc2[~expected])
1020-
sc = tc2.copy()
1021-
sc.drop_duplicates(keep=False, inplace=True)
1022-
assert_series_equal(sc, tc2[~expected])
961+
('first', Series([False, False, False, False, True, True, False])),
962+
('last', Series([False, True, True, False, False, False, False])),
963+
(False, Series([False, True, True, False, True, True, False]))
964+
])
965+
@pytest.mark.parametrize('npdtype', ['int_', 'uint', 'float_', 'unicode_'])
966+
def test_drop_duplicates_non_bool(self, npdtype, keep, expected):
967+
tc = Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype(npdtype))
968+
969+
assert_series_equal(tc.duplicated(keep=keep), expected)
970+
assert_series_equal(tc.drop_duplicates(keep=keep), tc[~expected])
971+
sc = tc.copy()
972+
sc.drop_duplicates(keep=keep, inplace=True)
973+
assert_series_equal(sc, tc[~expected])
1023974

1024-
def test_drop_duplicates_bool(self):
975+
@pytest.mark.parametrize('keep, expected',
976+
[('first', Series([False, False, True, True])),
977+
('last', Series([True, True, False, False])),
978+
(False, Series([True, True, True, True]))])
979+
def test_drop_duplicates_bool(self, keep, expected):
1025980
tc = Series([True, False, True, False])
1026981

1027-
expected = Series([False, False, True, True])
1028-
assert_series_equal(tc.duplicated(), expected)
1029-
assert_series_equal(tc.drop_duplicates(), tc[~expected])
982+
assert_series_equal(tc.duplicated(keep=keep), expected)
983+
assert_series_equal(tc.drop_duplicates(keep=keep), tc[~expected])
1030984
sc = tc.copy()
1031-
sc.drop_duplicates(inplace=True)
985+
sc.drop_duplicates(keep=keep, inplace=True)
1032986
assert_series_equal(sc, tc[~expected])
1033987

1034-
expected = Series([True, True, False, False])
1035-
assert_series_equal(tc.duplicated(keep='last'), expected)
1036-
assert_series_equal(tc.drop_duplicates(keep='last'), tc[~expected])
1037-
sc = tc.copy()
1038-
sc.drop_duplicates(keep='last', inplace=True)
1039-
assert_series_equal(sc, tc[~expected])
988+
@pytest.mark.parametrize('keep, expected', [
989+
('first', Series([False, False, True, False, True], name='name')),
990+
('last', Series([True, True, False, False, False], name='name')),
991+
(False, Series([True, True, True, False, True], name='name'))
992+
])
993+
def test_duplicated_keep(self, keep, expected):
994+
s = Series(['a', 'b', 'b', 'c', 'a'], name='name')
1040995

1041-
expected = Series([True, True, True, True])
1042-
assert_series_equal(tc.duplicated(keep=False), expected)
1043-
assert_series_equal(tc.drop_duplicates(keep=False), tc[~expected])
1044-
sc = tc.copy()
1045-
sc.drop_duplicates(keep=False, inplace=True)
1046-
assert_series_equal(sc, tc[~expected])
996+
result = s.duplicated(keep=keep)
997+
tm.assert_series_equal(result, expected)
998+
999+
@pytest.mark.parametrize('keep, expected', [
1000+
('first', Series([False, False, True, False, True])),
1001+
('last', Series([True, True, False, False, False])),
1002+
(False, Series([True, True, True, False, True]))
1003+
])
1004+
def test_duplicated_nan_none(self, keep, expected):
1005+
s = Series([np.nan, 3, 3, None, np.nan], dtype=object)
1006+
1007+
result = s.duplicated(keep=keep)
1008+
tm.assert_series_equal(result, expected)
10471009

10481010
def test_clip(self):
10491011
val = self.ts.median()
@@ -1416,7 +1378,8 @@ def test_ptp(self):
14161378
N = 1000
14171379
arr = np.random.randn(N)
14181380
ser = Series(arr)
1419-
assert np.ptp(ser) == np.ptp(arr)
1381+
with tm.assert_produces_warning(FutureWarning, check_stacklevel=False):
1382+
assert np.ptp(ser) == np.ptp(arr)
14201383

14211384
# GH11163
14221385
s = Series([3, 5, np.nan, -3, 10])

0 commit comments

Comments
 (0)