ENH: Sorting of ExtensionArrays (#19957) · pandas-dev/pandas@85817a7 (original) (raw)

`@@ -32,6 +32,46 @@ def test_apply_simple_series(self, data):

`

32

32

`result = pd.Series(data).apply(id)

`

33

33

`assert isinstance(result, pd.Series)

`

34

34

``

``

35

`+

def test_argsort(self, data_for_sorting):

`

``

36

`+

result = pd.Series(data_for_sorting).argsort()

`

``

37

`+

expected = pd.Series(np.array([2, 0, 1], dtype=np.int64))

`

``

38

`+

self.assert_series_equal(result, expected)

`

``

39

+

``

40

`+

def test_argsort_missing(self, data_missing_for_sorting):

`

``

41

`+

result = pd.Series(data_missing_for_sorting).argsort()

`

``

42

`+

expected = pd.Series(np.array([1, -1, 0], dtype=np.int64))

`

``

43

`+

self.assert_series_equal(result, expected)

`

``

44

+

``

45

`+

@pytest.mark.parametrize('ascending', [True, False])

`

``

46

`+

def test_sort_values(self, data_for_sorting, ascending):

`

``

47

`+

ser = pd.Series(data_for_sorting)

`

``

48

`+

result = ser.sort_values(ascending=ascending)

`

``

49

`+

expected = ser.iloc[[2, 0, 1]]

`

``

50

`+

if not ascending:

`

``

51

`+

expected = expected[::-1]

`

``

52

+

``

53

`+

self.assert_series_equal(result, expected)

`

``

54

+

``

55

`+

@pytest.mark.parametrize('ascending', [True, False])

`

``

56

`+

def test_sort_values_missing(self, data_missing_for_sorting, ascending):

`

``

57

`+

ser = pd.Series(data_missing_for_sorting)

`

``

58

`+

result = ser.sort_values(ascending=ascending)

`

``

59

`+

if ascending:

`

``

60

`+

expected = ser.iloc[[2, 0, 1]]

`

``

61

`+

else:

`

``

62

`+

expected = ser.iloc[[0, 2, 1]]

`

``

63

`+

self.assert_series_equal(result, expected)

`

``

64

+

``

65

`+

@pytest.mark.parametrize('ascending', [True, False])

`

``

66

`+

def test_sort_values_frame(self, data_for_sorting, ascending):

`

``

67

`+

df = pd.DataFrame({"A": [1, 2, 1],

`

``

68

`+

"B": data_for_sorting})

`

``

69

`+

result = df.sort_values(['A', 'B'])

`

``

70

`+

expected = pd.DataFrame({"A": [1, 1, 2],

`

``

71

`+

'B': data_for_sorting.take([2, 0, 1])},

`

``

72

`+

index=[2, 0, 1])

`

``

73

`+

self.assert_frame_equal(result, expected)

`

``

74

+

35

75

`@pytest.mark.parametrize('box', [pd.Series, lambda x: x])

`

36

76

`@pytest.mark.parametrize('method', [lambda x: x.unique(), pd.unique])

`

37

77

`def test_unique(self, data, box, method):

`