{"record":{"id":"ae7e300df275526b","repo":"pandas-dev/pandas","slug":"multi-dimensional-indexing-not-allowed","errorCode":null,"errorMessage":"multi-dimensional indexing not allowed","messagePattern":"multi-dimensional indexing not allowed","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"pandas/core/arrays/interval.py","lineNumber":684,"sourceCode":"    @overload\n    def __getitem__(self, key: ScalarIndexer) -> IntervalOrNA: ...\n\n    @overload\n    def __getitem__(self, key: SequenceIndexer) -> Self: ...\n\n    def __getitem__(self, key: PositionalIndexer) -> Self | IntervalOrNA:\n        key = check_array_indexer(self, key)\n        left = self._left[key]\n        right = self._right[key]\n\n        if not isinstance(left, (np.ndarray, ExtensionArray)):\n            # scalar\n            if is_scalar(left) and isna(left):\n                return self._fill_value\n            return Interval(left, right, self.closed)\n        if np.ndim(left) > 1:\n            # GH#30588 multi-dimensional indexer disallowed\n            raise ValueError(\"multi-dimensional indexing not allowed\")\n        # Argument 2 to \"_simple_new\" of \"IntervalArray\" has incompatible type\n        # \"Union[Period, Timestamp, Timedelta, NaTType, DatetimeArray, TimedeltaArray,\n        # ndarray[Any, Any]]\"; expected \"Union[Union[DatetimeArray, TimedeltaArray],\n        # ndarray[Any, Any]]\"\n        result = self._simple_new(left, right, dtype=self.dtype)  # type: ignore[arg-type]\n        if getitem_returns_view(self, key):\n            result._readonly = self._readonly\n        return result\n\n    def __setitem__(self, key, value) -> None:\n        if self._readonly:\n            raise ValueError(\"Cannot modify read-only array\")\n\n        key = check_array_indexer(self, key)\n        value_left, value_right = self._validate_setitem_value(value)\n\n        self._left[key] = value_left\n        self._right[key] = value_right","sourceCodeStart":666,"sourceCodeEnd":702,"githubUrl":"https://github.com/pandas-dev/pandas/blob/3b7651241d4da534b3559b60ef128e1c34f54116/pandas/core/arrays/interval.py#L666-L702","documentation":"Raised in `IntervalArray.__getitem__` when the indexer yields a left/right with `np.ndim(left) > 1`. IntervalArray is 1-D; a 2-D indexer (e.g. a 2-D boolean mask, or `arr[arr_idx, col_idx]` style) is not supported (GH#30588).","triggerScenarios":"`arr[two_dim_mask]` where the mask is shape (n, m); `arr[np.array([[0,1]])]`; passing a DataFrame as a boolean indexer.","commonSituations":"User mistakenly applying a 2-D mask meant for a DataFrame; chaining indexers `[row_idx, col_idx]` on a 1-D array; reshaping bugs producing 2-D index arrays.","solutions":["Flatten the indexer: use `.ravel()` on the mask or pick a single row/column first.","Index with a 1-D boolean array or integer positions only.","If you need 2-D selection, work on a DataFrame whose column is the interval, not on the bare IntervalArray."],"exampleFix":"# before\nmask = np.array([[True, False], [False, True]])\narr[mask]\n\n# after\narr[mask.ravel()]  # 1-D indexer","handlingStrategy":"validation","validationCode":"import numpy as np\n\ndef to_1d_indexer(key):\n    arr = np.asarray(key)\n    if arr.ndim > 1:\n        raise ValueError('indexer must be 1-D')\n    return key","typeGuard":"import numpy as np\n\ndef is_1d_indexer(key) -> bool:\n    arr = np.asarray(key)\n    return arr.ndim <= 1","tryCatchPattern":"try:\n    sub = arr[key]\nexcept ValueError as e:\n    if 'multi-dimensional indexing not allowed' in str(e):\n        sub = arr[np.asarray(key).ravel()]\n    else:\n        raise","preventionTips":["Flatten 2-D masks with .ravel() before indexing an IntervalArray.","Do not chain [row, col] indexers on a 1-D array.","Perform 2-D selection on a DataFrame, not on the bare array."],"tags":["interval","indexing","multi-dimensional","value-error"],"backgroundTag":null,"analyzedSha":"3b7651241d4da534b3559b60ef128e1c34f54116","analyzedAt":"2026-08-11T22:10:44.015Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}