{"record":{"id":"adaa2b340fa25bb0","repo":"pandas-dev/pandas","slug":"axis-axis-out-of-bounds","errorCode":null,"errorMessage":"axis(={axis}) out of bounds","messagePattern":"axis\\(=(.+?)\\) out of bounds","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"pandas/core/arrays/sparse/array.py","lineNumber":1732,"sourceCode":"\n        When performing the cumulative summation, any non-NA/null values will\n        be skipped. The resulting SparseArray will preserve the locations of\n        NaN values, but the fill value will be `np.nan` regardless.\n\n        Parameters\n        ----------\n        axis : int or None\n            Axis over which to perform the cumulative summation. If None,\n            perform cumulative summation over flattened array.\n\n        Returns\n        -------\n        cumsum : SparseArray\n        \"\"\"\n        nv.validate_cumsum(args, kwargs)\n\n        if axis is not None and axis >= self.ndim:  # Mimic ndarray behaviour.\n            raise ValueError(f\"axis(={axis}) out of bounds\")\n\n        if not self._null_fill_value:\n            return SparseArray(self.to_dense(), fill_value=np.nan).cumsum()\n\n        return SparseArray(\n            self.sp_values.cumsum(),\n            sparse_index=self.sp_index,\n            fill_value=self.fill_value,\n        )\n\n    def mean(self, axis: Axis = 0, *args, skipna: bool = True, **kwargs):\n        \"\"\"\n        Mean of non-NA/null values.\n\n        Parameters\n        ----------\n        axis : int, default 0\n            Not Used. NumPy compatibility.","sourceCodeStart":1714,"sourceCodeEnd":1750,"githubUrl":"https://github.com/pandas-dev/pandas/blob/3b7651241d4da534b3559b60ef128e1c34f54116/pandas/core/arrays/sparse/array.py#L1714-L1750","documentation":"ValueError from SparseArray.cumsum when axis >= ndim (always >= 1 for a 1-D array). The check mimics ndarray behavior which rejects an out-of-range axis before computing.","triggerScenarios":"arr.cumsum(axis=1) or arr.cumsum(axis=2) on a 1-D SparseArray; forwarding a 2-D axis default from generic code.","commonSituations":"Code written for DataFrames/2-D arrays reused against a 1-D sparse Series; defaulting axis to a non-zero value.","solutions":["Use arr.cumsum() (axis defaults to 0) or arr.cumsum(axis=0).","Drop the axis kwarg entirely for 1-D sparse arrays.","Materialize to dense and call np.asarray(arr).cumsum(axis=axis) only after validating axis < ndim."],"exampleFix":"// before\narr.cumsum(axis=1)  # raises\n// after\narr.cumsum()","handlingStrategy":"validation","validationCode":"def safe_cumsum(arr, axis=0):\n    if axis >= arr.ndim:\n        axis = 0\n    return arr.cumsum(axis=axis)","typeGuard":"def axis_in_bounds(arr, axis) -> bool:\n    return axis is None or (0 <= axis < arr.ndim)","tryCatchPattern":"try:\n    arr.cumsum(axis=axis)\nexcept ValueError as e:\n    if 'out of bounds' in str(e):\n        out = arr.cumsum(axis=0)\n    else:\n        raise","preventionTips":["Omit axis for 1-D sparse arrays.","Validate axis < ndim before passing through."],"tags":["sparse","cumsum","axis","dimensionality"],"backgroundTag":null,"analyzedSha":"3b7651241d4da534b3559b60ef128e1c34f54116","analyzedAt":"2026-08-11T22:10:44.015Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}