Skip to content

Commit 8c63eb2

Browse files
committed
Test for sort warning in DataFrame and clean up sort test for Series
1 parent 6b06bda commit 8c63eb2

File tree

2 files changed

+43
-34
lines changed

2 files changed

+43
-34
lines changed

pandas/tests/frame/test_analytics.py

+39-28
Original file line numberDiff line numberDiff line change
@@ -858,44 +858,55 @@ def wrapper(x):
858858
(True, {'H': [8, 9, np.nan, np.nan],
859859
'I': [8, 9, np.nan, np.nan],
860860
'J': [1, np.nan, np.nan, np.nan],
861-
'K': ['a', np.nan, np.nan, np.nan],
862-
'L': Categorical(['a', np.nan, np.nan, np.nan],
861+
'K': Categorical(['a', np.nan, np.nan, np.nan],
863862
categories=['a']),
864-
'M': to_datetime(['2000-1-2', 'NaT', 'NaT', 'NaT']),
865-
'N': to_timedelta(['1 days', 'nan', 'nan', 'nan']),
866-
'O': [0, 1, 2, 3]}),
863+
'L': to_datetime(['2000-1-2', 'NaT', 'NaT', 'NaT']),
864+
'M': to_timedelta(['1 days', 'nan', 'nan', 'nan']),
865+
'N': [0, 1, 2, 3]}),
867866
(False, {'H': [8, 9, np.nan, np.nan],
868867
'I': [8, 9, np.nan, np.nan],
869868
'J': [1, np.nan, np.nan, np.nan],
870-
'K': [np.nan, 'a', np.nan, np.nan],
871-
'L': Categorical([np.nan, 'a', np.nan, np.nan],
869+
'K': Categorical([np.nan, 'a', np.nan, np.nan],
872870
categories=['a']),
873-
'M': to_datetime(['NaT', '2000-1-2', 'NaT', 'NaT']),
874-
'N': to_timedelta(['nan', '1 days', 'nan', 'nan']),
875-
'O': [0, 1, 2, 3]})
871+
'L': to_datetime(['NaT', '2000-1-2', 'NaT', 'NaT']),
872+
'M': to_timedelta(['nan', '1 days', 'nan', 'nan']),
873+
'N': [0, 1, 2, 3]})
876874
])
877875
def test_mode_dropna(self, dropna, expected):
878876

879-
df = pd.DataFrame({"A": [12, 12, 19, 11],
880-
"B": [10, 10, np.nan, 3],
881-
"C": [1, np.nan, np.nan, np.nan],
882-
"D": [np.nan, np.nan, 'a', np.nan],
883-
"E": Categorical([np.nan, np.nan, 'a', np.nan]),
884-
"F": to_datetime(['NaT', '2000-1-2', 'NaT', 'NaT']),
885-
"G": to_timedelta(['1 days', 'nan', 'nan', 'nan']),
886-
"H": [8, 8, 9, 9],
887-
"I": [9, 9, 8, 8],
888-
"J": [1, 1, np.nan, np.nan],
889-
"K": [np.nan, np.nan, 'a', 'a'],
890-
"L": Categorical(['a', np.nan, 'a', np.nan]),
891-
"M": to_datetime(['2000-1-2', '2000-1-2',
892-
'NaT', 'NaT']),
893-
"N": to_timedelta(['1 days', 'nan',
894-
'1 days', 'nan']),
895-
"O": np.arange(4, dtype='int64')})
877+
df = DataFrame({"A": [12, 12, 19, 11],
878+
"B": [10, 10, np.nan, 3],
879+
"C": [1, np.nan, np.nan, np.nan],
880+
"D": [np.nan, np.nan, 'a', np.nan],
881+
"E": Categorical([np.nan, np.nan, 'a', np.nan]),
882+
"F": to_datetime(['NaT', '2000-1-2', 'NaT', 'NaT']),
883+
"G": to_timedelta(['1 days', 'nan', 'nan', 'nan']),
884+
"H": [8, 8, 9, 9],
885+
"I": [9, 9, 8, 8],
886+
"J": [1, 1, np.nan, np.nan],
887+
"K": Categorical(['a', np.nan, 'a', np.nan]),
888+
"L": to_datetime(['2000-1-2', '2000-1-2',
889+
'NaT', 'NaT']),
890+
"M": to_timedelta(['1 days', 'nan',
891+
'1 days', 'nan']),
892+
"N": np.arange(4, dtype='int64')})
896893

897894
result = df[sorted(list(expected.keys()))].mode(dropna=dropna)
898-
expected = pd.DataFrame(expected)
895+
expected = DataFrame(expected)
896+
tm.assert_frame_equal(result, expected)
897+
898+
@pytest.mark.skipif(not compat.PY3, reason="only PY3")
899+
def test_mode_sortwarning(self):
900+
# Check for the warning that is raised when the mode
901+
# results cannot be sorted
902+
903+
df = DataFrame({"A": [np.nan, np.nan, 'a', 'a']})
904+
expected = DataFrame({'A': ['a', np.nan]})
905+
906+
with tm.assert_produces_warning(UserWarning, check_stacklevel=False):
907+
result = df.mode(dropna=False)
908+
result = result.sort_values(by='A').reset_index(drop=True)
909+
899910
tm.assert_frame_equal(result, expected)
900911

901912
def test_operators_timedelta64(self):

pandas/tests/series/test_analytics.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -364,18 +364,16 @@ def test_mode_intoverflow(self, dropna, expected1, expected2):
364364
tm.assert_series_equal(s.mode(dropna), expected2)
365365

366366
@pytest.mark.skipif(not compat.PY3, reason="only PY3")
367-
@pytest.mark.parametrize('dropna, expected', [
368-
(False, ['foo', np.nan]),
369-
])
370-
def test_mode_sortwarning(self, dropna, expected):
367+
def test_mode_sortwarning(self):
371368
# Check for the warning that is raised when the mode
372369
# results cannot be sorted
373370

374-
expected = Series(expected)
371+
expected = Series(['foo', np.nan])
375372
s = Series([1, 'foo', 'foo', np.nan, np.nan])
376373

377374
with tm.assert_produces_warning(UserWarning, check_stacklevel=False):
378-
result = s.mode(dropna).sort_values().reset_index(drop=True)
375+
result = s.mode(dropna=False)
376+
result = result.sort_values().reset_index(drop=True)
379377

380378
tm.assert_series_equal(result, expected)
381379

0 commit comments

Comments
 (0)