|
39 | 39 | IgnoreRaise,
|
40 | 40 | IndexLabel,
|
41 | 41 | IndexT,
|
| 42 | + NaPosition, |
42 | 43 | Scalar,
|
43 | 44 | Self,
|
44 | 45 | Shape,
|
@@ -2398,8 +2399,52 @@ def append(self, other):
|
2398 | 2399 | return Index(new_tuples)
|
2399 | 2400 |
|
2400 | 2401 | def argsort(
|
2401 |
| - self, *args, na_position: str = "last", **kwargs |
| 2402 | + self, *args, na_position: NaPosition = "last", **kwargs |
2402 | 2403 | ) -> npt.NDArray[np.intp]:
|
| 2404 | + """ |
| 2405 | + Return the integer indices that would sort the index. |
| 2406 | +
|
| 2407 | + Parameters |
| 2408 | + ---------- |
| 2409 | + *args |
| 2410 | + Passed to `numpy.ndarray.argsort`. |
| 2411 | + na_position : {'first' or 'last'}, default 'last' |
| 2412 | + Argument 'first' puts NaNs at the beginning, 'last' puts NaNs at |
| 2413 | + the end. |
| 2414 | + **kwargs |
| 2415 | + Passed to `numpy.ndarray.argsort`. |
| 2416 | +
|
| 2417 | + Returns |
| 2418 | + ------- |
| 2419 | + np.ndarray[np.intp] |
| 2420 | + Integer indices that would sort the index if used as |
| 2421 | + an indexer. |
| 2422 | +
|
| 2423 | + See Also |
| 2424 | + -------- |
| 2425 | + numpy.argsort : Similar method for NumPy arrays. |
| 2426 | + Index.argsort : Similar method for Index. |
| 2427 | +
|
| 2428 | + Examples |
| 2429 | + -------- |
| 2430 | + >>> midx = pd.MultiIndex.from_arrays([[3, 2], ["e", "c"]]) |
| 2431 | + >>> midx |
| 2432 | + MultiIndex([(3, 'e'), (2, 'c')]) |
| 2433 | +
|
| 2434 | + >>> order = midx.argsort() |
| 2435 | + >>> order |
| 2436 | + array([1, 0]) |
| 2437 | +
|
| 2438 | + >>> midx[order] |
| 2439 | + Index(['a', 'b', 'c', 'd'], dtype='object') |
| 2440 | +
|
| 2441 | + >>> midx = pd.MultiIndex.from_arrays([[2, 2], [np.nan, 0]]) |
| 2442 | + >>> midx.argsort(na_position='first') |
| 2443 | + array([0, 1]) |
| 2444 | +
|
| 2445 | + >>> midx.argsort() |
| 2446 | + array([1, 0]) |
| 2447 | + """ |
2403 | 2448 | target = self._sort_levels_monotonic(raise_if_incomparable=True)
|
2404 | 2449 | keys = [lev.codes for lev in target._get_codes_for_sorting()]
|
2405 | 2450 | return lexsort_indexer(keys, na_position=na_position, codes_given=True)
|
@@ -2791,8 +2836,7 @@ def sortlevel(
|
2791 | 2836 | # error: Item "Hashable" of "Union[Hashable, Sequence[Hashable]]" has
|
2792 | 2837 | # no attribute "__iter__" (not iterable)
|
2793 | 2838 | level = [
|
2794 |
| - self._get_level_number(lev) |
2795 |
| - for lev in level # type: ignore[union-attr] |
| 2839 | + self._get_level_number(lev) for lev in level # type: ignore[union-attr] |
2796 | 2840 | ]
|
2797 | 2841 | sortorder = None
|
2798 | 2842 |
|
|
0 commit comments