pandas-dev/pandas · error · NotImplementedError

interpolate is not implemented for dtype={self.dtype}

Error message

interpolate is not implemented for dtype={self.dtype}

What it means

Raised by BaseMaskedArray._interpolate when the array's dtype is neither floating (kind 'f') nor integer (kind 'iu'). Interpolation is only meaningful for numeric data; for boolean or other masked dtypes pandas has no interpolation implementation and raises NotImplementedError.

Source

Thrown at pandas/core/arrays/masked.py:2125

        **kwargs,
    ) -> FloatingArray:
        """
        See NDFrame.interpolate.__doc__.
        """
        # NB: we return type(self) even if copy=False
        if self.dtype.kind == "f":
            if copy:
                data = self._data.copy()
                mask = self._mask.copy()
            else:
                data = self._data
                mask = self._mask
        elif self.dtype.kind in "iu":
            copy = True
            data = self._data.astype("f8")
            mask = self._mask.copy()
        else:
            raise NotImplementedError(
                f"interpolate is not implemented for dtype={self.dtype}"
            )

        missing.interpolate_2d_inplace(
            data,
            method=method,
            axis=0,
            index=index,
            limit=limit,
            limit_direction=limit_direction,
            limit_area=limit_area,
            mask=mask,
            **kwargs,
        )
        if not copy:
            return self  # type: ignore[return-value]
        if self.dtype.kind == "f":
            return type(self)._simple_new(data, mask)  # type: ignore[return-value]

View on GitHub (pinned to 71959b8cb9)

Solutions

  1. Exclude non-numeric columns from interpolation: df.select_dtypes(include='number').interpolate().
  2. Drop or forward-fill the boolean column instead: df['bool_col'] = df['bool_col'].ffill().
  3. Convert to a numeric dtype if interpolation is genuinely required.

Example fix

// before
df.interpolate()  # raises if df has a 'boolean' masked column

// after
df.select_dtypes(include="number").interpolate()
Defensive patterns

Strategy: type-guard

Validate before calling

def interpolate_numeric_only(df):
    numeric = df.select_dtypes(include="number")
    return numeric.interpolate()

Type guard

def is_interpolatable(arr) -> bool:
    return getattr(arr.dtype, "kind", None) in ("f", "i", "u")

Try / catch

try:
    out = df.interpolate()
except NotImplementedError as e:
    if "interpolate is not implemented for dtype" in str(e):
        out = df.select_dtypes(include="number").interpolate()
    else:
        raise

Prevention

When it happens

Trigger: Calling Series.interpolate()/df.interpolate() on a column backed by a non-numeric masked array, e.g. a nullable BooleanArray ('boolean' dtype), so self.dtype.kind == 'b'.

Common situations: Running df.interpolate() across a mixed-dtype frame that includes a 'boolean' column; calling interpolate on a column that was inadvertently converted to boolean.

Related errors


AI-assisted analysis of pandas-dev/pandas@71959b8cb9 (2026-08-07). Data as JSON: /api/errors/b81de3ef72dc0f9a. Report an issue: GitHub.