Skip to content

Commit 61d42bf

Browse files
jamestran201-altGuessWhoSamFoo
authored andcommitted
TST: #15752 Add drop_duplicates tests for uint, float and bool for Series (#17974)
1 parent ae9dfce commit 61d42bf

File tree

1 file changed

+89
-46
lines changed

1 file changed

+89
-46
lines changed

pandas/tests/series/test_analytics.py

+89-46
Original file line numberDiff line numberDiff line change
@@ -873,52 +873,95 @@ def test_unique(self):
873873
expected = np.array([1, 2, 3, None], dtype=object)
874874
tm.assert_numpy_array_equal(result, expected)
875875

876-
def test_drop_duplicates(self):
877-
# check both int and object
878-
for s in [Series([1, 2, 3, 3]), Series(['1', '2', '3', '3'])]:
879-
expected = Series([False, False, False, True])
880-
assert_series_equal(s.duplicated(), expected)
881-
assert_series_equal(s.drop_duplicates(), s[~expected])
882-
sc = s.copy()
883-
sc.drop_duplicates(inplace=True)
884-
assert_series_equal(sc, s[~expected])
885-
886-
expected = Series([False, False, True, False])
887-
assert_series_equal(s.duplicated(keep='last'), expected)
888-
assert_series_equal(s.drop_duplicates(keep='last'), s[~expected])
889-
sc = s.copy()
890-
sc.drop_duplicates(keep='last', inplace=True)
891-
assert_series_equal(sc, s[~expected])
892-
893-
expected = Series([False, False, True, True])
894-
assert_series_equal(s.duplicated(keep=False), expected)
895-
assert_series_equal(s.drop_duplicates(keep=False), s[~expected])
896-
sc = s.copy()
897-
sc.drop_duplicates(keep=False, inplace=True)
898-
assert_series_equal(sc, s[~expected])
899-
900-
for s in [Series([1, 2, 3, 5, 3, 2, 4]),
901-
Series(['1', '2', '3', '5', '3', '2', '4'])]:
902-
expected = Series([False, False, False, False, True, True, False])
903-
assert_series_equal(s.duplicated(), expected)
904-
assert_series_equal(s.drop_duplicates(), s[~expected])
905-
sc = s.copy()
906-
sc.drop_duplicates(inplace=True)
907-
assert_series_equal(sc, s[~expected])
908-
909-
expected = Series([False, True, True, False, False, False, False])
910-
assert_series_equal(s.duplicated(keep='last'), expected)
911-
assert_series_equal(s.drop_duplicates(keep='last'), s[~expected])
912-
sc = s.copy()
913-
sc.drop_duplicates(keep='last', inplace=True)
914-
assert_series_equal(sc, s[~expected])
915-
916-
expected = Series([False, True, True, False, True, True, False])
917-
assert_series_equal(s.duplicated(keep=False), expected)
918-
assert_series_equal(s.drop_duplicates(keep=False), s[~expected])
919-
sc = s.copy()
920-
sc.drop_duplicates(keep=False, inplace=True)
921-
assert_series_equal(sc, s[~expected])
876+
@pytest.mark.parametrize(
877+
"tc1, tc2",
878+
[
879+
(
880+
Series([1, 2, 3, 3], dtype=np.dtype('int_')),
881+
Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype('int_'))
882+
),
883+
(
884+
Series([1, 2, 3, 3], dtype=np.dtype('uint')),
885+
Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype('uint'))
886+
),
887+
(
888+
Series([1, 2, 3, 3], dtype=np.dtype('float_')),
889+
Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype('float_'))
890+
),
891+
(
892+
Series([1, 2, 3, 3], dtype=np.dtype('unicode_')),
893+
Series([1, 2, 3, 5, 3, 2, 4], dtype=np.dtype('unicode_'))
894+
)
895+
]
896+
)
897+
def test_drop_duplicates_non_bool(self, tc1, tc2):
898+
# Test case 1
899+
expected = Series([False, False, False, True])
900+
assert_series_equal(tc1.duplicated(), expected)
901+
assert_series_equal(tc1.drop_duplicates(), tc1[~expected])
902+
sc = tc1.copy()
903+
sc.drop_duplicates(inplace=True)
904+
assert_series_equal(sc, tc1[~expected])
905+
906+
expected = Series([False, False, True, False])
907+
assert_series_equal(tc1.duplicated(keep='last'), expected)
908+
assert_series_equal(tc1.drop_duplicates(keep='last'), tc1[~expected])
909+
sc = tc1.copy()
910+
sc.drop_duplicates(keep='last', inplace=True)
911+
assert_series_equal(sc, tc1[~expected])
912+
913+
expected = Series([False, False, True, True])
914+
assert_series_equal(tc1.duplicated(keep=False), expected)
915+
assert_series_equal(tc1.drop_duplicates(keep=False), tc1[~expected])
916+
sc = tc1.copy()
917+
sc.drop_duplicates(keep=False, inplace=True)
918+
assert_series_equal(sc, tc1[~expected])
919+
920+
# Test case 2
921+
expected = Series([False, False, False, False, True, True, False])
922+
assert_series_equal(tc2.duplicated(), expected)
923+
assert_series_equal(tc2.drop_duplicates(), tc2[~expected])
924+
sc = tc2.copy()
925+
sc.drop_duplicates(inplace=True)
926+
assert_series_equal(sc, tc2[~expected])
927+
928+
expected = Series([False, True, True, False, False, False, False])
929+
assert_series_equal(tc2.duplicated(keep='last'), expected)
930+
assert_series_equal(tc2.drop_duplicates(keep='last'), tc2[~expected])
931+
sc = tc2.copy()
932+
sc.drop_duplicates(keep='last', inplace=True)
933+
assert_series_equal(sc, tc2[~expected])
934+
935+
expected = Series([False, True, True, False, True, True, False])
936+
assert_series_equal(tc2.duplicated(keep=False), expected)
937+
assert_series_equal(tc2.drop_duplicates(keep=False), tc2[~expected])
938+
sc = tc2.copy()
939+
sc.drop_duplicates(keep=False, inplace=True)
940+
assert_series_equal(sc, tc2[~expected])
941+
942+
def test_drop_duplicates_bool(self):
943+
tc = Series([True, False, True, False])
944+
945+
expected = Series([False, False, True, True])
946+
assert_series_equal(tc.duplicated(), expected)
947+
assert_series_equal(tc.drop_duplicates(), tc[~expected])
948+
sc = tc.copy()
949+
sc.drop_duplicates(inplace=True)
950+
assert_series_equal(sc, tc[~expected])
951+
952+
expected = Series([True, True, False, False])
953+
assert_series_equal(tc.duplicated(keep='last'), expected)
954+
assert_series_equal(tc.drop_duplicates(keep='last'), tc[~expected])
955+
sc = tc.copy()
956+
sc.drop_duplicates(keep='last', inplace=True)
957+
assert_series_equal(sc, tc[~expected])
958+
959+
expected = Series([True, True, True, True])
960+
assert_series_equal(tc.duplicated(keep=False), expected)
961+
assert_series_equal(tc.drop_duplicates(keep=False), tc[~expected])
962+
sc = tc.copy()
963+
sc.drop_duplicates(keep=False, inplace=True)
964+
assert_series_equal(sc, tc[~expected])
922965

923966
def test_clip(self):
924967
val = self.ts.median()

0 commit comments

Comments
 (0)