Skip to content

Commit 67f0ab0

Browse files
committed
Delegate deprecated sort() and order() to their own tests.
Before this commit, the `Series.sort_values()` tests relied on deprecated `Series.sort()` and `Series.order()` as the source of truth. However they both merely called `Series.sort_values()` under the hood. This commit consolidates the core test logic against `.sort_values()` directly, while `.sort()` and `.order()` merely check for equivalence with `.sort_values()`. Also removes some no-op assertions that had rotted from the old days of `sort()`/`order()`.
1 parent 70e06d1 commit 67f0ab0

File tree

2 files changed

+55
-58
lines changed

2 files changed

+55
-58
lines changed

pandas/tests/frame/test_sorting.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,9 @@ class TestDataFrameSorting(tm.TestCase, TestData):
2222
_multiprocess_can_split_ = True
2323

2424
def test_sort_index(self):
25-
# API for 9816
26-
27-
# sort_index
2825
frame = DataFrame(np.arange(16).reshape(4, 4), index=[1, 2, 3, 4],
2926
columns=['A', 'B', 'C', 'D'])
3027

31-
# 9816 deprecated
32-
with tm.assert_produces_warning(FutureWarning):
33-
frame.sort(columns='A')
34-
with tm.assert_produces_warning(FutureWarning):
35-
frame.sort()
36-
3728
# axis=0 : sort rows by index labels
3829
unordered = frame.ix[[3, 2, 4, 1]]
3930
result = unordered.sort_index(axis=0)
@@ -67,13 +58,23 @@ def test_sort_index(self):
6758
expected = df.sortlevel('A', axis=1, sort_remaining=False)
6859
assert_frame_equal(result, expected)
6960

70-
# MI sort, but no level
61+
# MI sort, but no level: sort_level has no effect
7162
mi = MultiIndex.from_tuples([[1, 1, 3], [1, 1, 1]], names=list('ABC'))
7263
df = DataFrame([[1, 2], [3, 4]], mi)
7364
result = df.sort_index(sort_remaining=False)
7465
expected = df.sort_index()
7566
assert_frame_equal(result, expected)
7667

68+
def test_sort(self):
69+
frame = DataFrame(np.arange(16).reshape(4, 4), index=[1, 2, 3, 4],
70+
columns=['A', 'B', 'C', 'D'])
71+
72+
# 9816 deprecated
73+
with tm.assert_produces_warning(FutureWarning):
74+
frame.sort(columns='A')
75+
with tm.assert_produces_warning(FutureWarning):
76+
frame.sort()
77+
7778
def test_sort_values(self):
7879
frame = DataFrame(np.arange(16).reshape(4, 4), index=[1, 2, 3, 4],
7980
columns=['A', 'B', 'C', 'D'])

pandas/tests/series/test_sorting.py

Lines changed: 44 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,57 @@ class TestSeriesSorting(TestData, tm.TestCase):
1515

1616
_multiprocess_can_split_ = True
1717

18-
def test_sort_values(self):
18+
def test_sort(self):
1919

2020
ts = self.ts.copy()
2121

2222
# 9816 deprecated
2323
with tm.assert_produces_warning(FutureWarning):
24-
ts.sort()
25-
24+
ts.sort() # sorts inplace
2625
self.assert_series_equal(ts, self.ts.sort_values())
27-
self.assert_index_equal(ts.index, self.ts.sort_values().index)
2826

27+
def test_order(self):
28+
29+
# 9816 deprecated
30+
with tm.assert_produces_warning(FutureWarning):
31+
result = self.ts.order()
32+
self.assert_series_equal(result, self.ts.sort_values())
33+
34+
def test_sort_values(self):
35+
36+
# check indexes are reordered corresponding with the values
37+
ser = Series([3, 2, 4, 1], ['A', 'B', 'C', 'D'])
38+
expected = Series([1, 2, 3, 4], ['D', 'B', 'A', 'C'])
39+
result = ser.sort_values()
40+
self.assert_series_equal(expected, result)
41+
42+
ts = self.ts.copy()
43+
ts[:5] = np.NaN
44+
vals = ts.values
45+
46+
result = ts.sort_values()
47+
self.assertTrue(np.isnan(result[-5:]).all())
48+
self.assert_numpy_array_equal(result[:-5].values, np.sort(vals[5:]))
49+
50+
# na_position
51+
result = ts.sort_values(na_position='first')
52+
self.assertTrue(np.isnan(result[:5]).all())
53+
self.assert_numpy_array_equal(result[5:].values, np.sort(vals[5:]))
54+
55+
# something object-type
56+
ser = Series(['A', 'B'], [1, 2])
57+
# no failure
58+
ser.sort_values()
59+
60+
# ascending=False
61+
ordered = ts.sort_values(ascending=False)
62+
expected = np.sort(ts.valid().values)[::-1]
63+
assert_almost_equal(expected, ordered.valid().values)
64+
ordered = ts.sort_values(ascending=False, na_position='first')
65+
assert_almost_equal(expected, ordered.valid().values)
66+
67+
# inplace=True
68+
ts = self.ts.copy()
2969
ts.sort_values(ascending=False, inplace=True)
3070
self.assert_series_equal(ts, self.ts.sort_values(ascending=False))
3171
self.assert_index_equal(ts.index,
@@ -41,20 +81,6 @@ def f():
4181

4282
self.assertRaises(ValueError, f)
4383

44-
# test order/sort inplace
45-
# GH6859
46-
ts1 = self.ts.copy()
47-
ts1.sort_values(ascending=False, inplace=True)
48-
ts2 = self.ts.copy()
49-
ts2.sort_values(ascending=False, inplace=True)
50-
assert_series_equal(ts1, ts2)
51-
52-
ts1 = self.ts.copy()
53-
ts1 = ts1.sort_values(ascending=False, inplace=False)
54-
ts2 = self.ts.copy()
55-
ts2 = ts.sort_values(ascending=False)
56-
assert_series_equal(ts1, ts2)
57-
5884
def test_sort_index(self):
5985
rindex = list(self.ts.index)
6086
random.shuffle(rindex)
@@ -119,33 +145,3 @@ def test_sort_API(self):
119145

120146
self.assertRaises(ValueError,
121147
lambda: random_order.sort_index(level=0, axis=1))
122-
123-
def test_order(self):
124-
125-
# 9816 deprecated
126-
with tm.assert_produces_warning(FutureWarning):
127-
self.ts.order()
128-
129-
ts = self.ts.copy()
130-
ts[:5] = np.NaN
131-
vals = ts.values
132-
133-
result = ts.sort_values()
134-
self.assertTrue(np.isnan(result[-5:]).all())
135-
self.assert_numpy_array_equal(result[:-5].values, np.sort(vals[5:]))
136-
137-
result = ts.sort_values(na_position='first')
138-
self.assertTrue(np.isnan(result[:5]).all())
139-
self.assert_numpy_array_equal(result[5:].values, np.sort(vals[5:]))
140-
141-
# something object-type
142-
ser = Series(['A', 'B'], [1, 2])
143-
# no failure
144-
ser.sort_values()
145-
146-
# ascending=False
147-
ordered = ts.sort_values(ascending=False)
148-
expected = np.sort(ts.valid().values)[::-1]
149-
assert_almost_equal(expected, ordered.valid().values)
150-
ordered = ts.sort_values(ascending=False, na_position='first')
151-
assert_almost_equal(expected, ordered.valid().values)

0 commit comments

Comments
 (0)