{"record":{"id":"e47d285dd33e809f","repo":"pandas-dev/pandas","slug":"value-must-be-1-d-array-like-or-scalar-type-valu","errorCode":null,"errorMessage":"Value must be 1-D array-like or scalar, {type(value).__name__} is not supported","messagePattern":"Value must be 1-D array-like or scalar, (.+?) is not supported","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"pandas/core/base.py","lineNumber":1653,"sourceCode":"        If the values are not monotonically sorted, wrong locations\n        may be returned:\n\n        >>> ser = pd.Series([2, 1, 3])\n        >>> ser\n        0    2\n        1    1\n        2    3\n        dtype: int64\n\n        >>> ser.searchsorted(1)  # doctest: +SKIP\n        0  # wrong result, correct would be 1\n        \"\"\"\n        if isinstance(value, ABCDataFrame):\n            msg = (\n                \"Value must be 1-D array-like or scalar, \"\n                f\"{type(value).__name__} is not supported\"\n            )\n            raise ValueError(msg)\n\n        values = self._values\n        if not isinstance(values, np.ndarray):\n            # Going through EA.searchsorted directly improves performance GH#38083\n            return values.searchsorted(value, side=side, sorter=sorter)\n\n        return algorithms.searchsorted(\n            values,\n            value,\n            side=side,\n            sorter=sorter,\n        )\n\n    def drop_duplicates(self, *, keep: DropKeep = \"first\") -> Self:\n        duplicated = self._duplicated(keep=keep)\n        # error: Value of type \"IndexOpsMixin\" is not indexable\n        return self[~duplicated]  # type: ignore[index]\n","sourceCodeStart":1635,"sourceCodeEnd":1671,"githubUrl":"https://github.com/pandas-dev/pandas/blob/3b7651241d4da534b3559b60ef128e1c34f54116/pandas/core/base.py#L1635-L1671","documentation":"Raised by IndexOpsMixin.searchsorted when `value` is a DataFrame. searchsorted requires a 1-D array-like or scalar to find insertion points in a sorted array; a 2-D DataFrame has no defined 1-D ordering. The error names the offending type so users see 'DataFrame' explicitly. Other 2-D inputs may fail later with a NumPy error; only the DataFrame case is pre-checked.","triggerScenarios":"ser.searchsorted(df); ser.searchsorted(df['col']) works (1-D) but passing the whole df raises; passing a 2-D ndarray may not hit this branch but is also unsupported.","commonSituations":"Forgetting to select a column before searchsorted; passing a DataFrame built from a lookup table thinking searchsorted broadcasts.","solutions":["Pass a single column: ser.searchsorted(df['col']).","Pass a scalar or 1-D list/array of search values.","Apply per-column with a comprehension if you need results for many columns."],"exampleFix":"// before\npos = ser.searchsorted(df)\n// after\npos = ser.searchsorted(df['key'])","handlingStrategy":"type-guard","validationCode":"import pandas as pd\nif isinstance(value, pd.DataFrame):\n    raise TypeError('pass a 1-D column or scalar, not a DataFrame')\npos = ser.searchsorted(value)","typeGuard":"def is_dataframe(x) -> bool:\n    return isinstance(x, pd.DataFrame)","tryCatchPattern":null,"preventionTips":["Always select a single column (df['col']) before searchsorted.","Validate dimensionality for generic lookup helpers."],"tags":["value-error","searchsorted","indexing","dataframe","dimensionality"],"backgroundTag":null,"analyzedSha":"3b7651241d4da534b3559b60ef128e1c34f54116","analyzedAt":"2026-08-11T22:10:44.015Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}