|
| 1 | +# Contains code from https://github.com/pandas-dev/pandas/blob/main/pandas/core/indexes/multi.py |
| 2 | +from __future__ import annotations |
| 3 | + |
| 4 | +from typing import Hashable, Iterable, Sequence |
| 5 | + |
| 6 | +import bigframes_vendored.pandas.core.indexes.base |
| 7 | + |
| 8 | +from bigframes import constants |
| 9 | + |
| 10 | + |
| 11 | +class MultiIndex(bigframes_vendored.pandas.core.indexes.base.Index): |
| 12 | + """ |
| 13 | + A multi-level, or hierarchical, index object for pandas objects. |
| 14 | + """ |
| 15 | + |
| 16 | + @classmethod |
| 17 | + def from_tuples( |
| 18 | + cls, |
| 19 | + tuples: Iterable[tuple[Hashable, ...]], |
| 20 | + sortorder: int | None = None, |
| 21 | + names: Sequence[Hashable] | Hashable | None = None, |
| 22 | + ) -> MultiIndex: |
| 23 | + """ |
| 24 | + Convert list of tuples to MultiIndex. |
| 25 | +
|
| 26 | + **Examples:** |
| 27 | +
|
| 28 | + >>> import bigframes.pandas as bpd |
| 29 | + >>> bpd.options.display.progress_bar = None |
| 30 | + >>> tuples = [(1, 'red'), (1, 'blue'), |
| 31 | + ... (2, 'red'), (2, 'blue')] |
| 32 | + >>> bpd.MultiIndex.from_tuples(tuples, names=('number', 'color')) |
| 33 | + MultiIndex([(1, 'red'), |
| 34 | + (1, 'blue'), |
| 35 | + (2, 'red'), |
| 36 | + (2, 'blue')], |
| 37 | + names=['number', 'color']) |
| 38 | +
|
| 39 | + Args: |
| 40 | + tuples (list / sequence of tuple-likes): |
| 41 | + Each tuple is the index of one row/column. |
| 42 | + sortorder (int or None): |
| 43 | + Level of sortedness (must be lexicographically sorted by that |
| 44 | + level). |
| 45 | + names (list / sequence of str, optional): |
| 46 | + Names for the levels in the index. |
| 47 | +
|
| 48 | + Returns: |
| 49 | + MultiIndex |
| 50 | + """ |
| 51 | + raise NotImplementedError(constants.ABSTRACT_METHOD_ERROR_MESSAGE) |
| 52 | + |
| 53 | + @classmethod |
| 54 | + def from_arrays( |
| 55 | + cls, |
| 56 | + arrays, |
| 57 | + sortorder: int | None = None, |
| 58 | + names=None, |
| 59 | + ) -> MultiIndex: |
| 60 | + """ |
| 61 | + Convert arrays to MultiIndex. |
| 62 | +
|
| 63 | + **Examples:** |
| 64 | +
|
| 65 | + >>> import bigframes.pandas as bpd |
| 66 | + >>> bpd.options.display.progress_bar = None |
| 67 | + >>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']] |
| 68 | + >>> bpd.MultiIndex.from_arrays(arrays, names=('number', 'color')) |
| 69 | + MultiIndex([(1, 'red'), |
| 70 | + (1, 'blue'), |
| 71 | + (2, 'red'), |
| 72 | + (2, 'blue')], |
| 73 | + names=['number', 'color']) |
| 74 | +
|
| 75 | + Args: |
| 76 | + arrays (list / sequence of array-likes): |
| 77 | + Each array-like gives one level's value for each data point. |
| 78 | + len(arrays) is the number of levels. |
| 79 | + sortorder (int or None): |
| 80 | + Level of sortedness (must be lexicographically sorted by that |
| 81 | + level). |
| 82 | + names (list / sequence of str, optional): |
| 83 | + Names for the levels in the index. |
| 84 | +
|
| 85 | + Returns: |
| 86 | + MultiIndex |
| 87 | + """ |
| 88 | + raise NotImplementedError(constants.ABSTRACT_METHOD_ERROR_MESSAGE) |
0 commit comments