pandas-dev/pandas · error · TypeError

' ' with dtype does not support operation

Error message

'{type(self).__name__}' with dtype {self.dtype} does not support operation '{name}'

What it means

In _reduce, the requested reduction name is mapped to a pyarrow.compute function (median->quantile, std->stddev, etc.). If getattr(pc, name, None) returns None, the pyarrow function genuinely does not exist for any type, so pandas raises TypeError listing the array class, dtype, and unsupported operation. This fires before any data is processed.

Solutions

  1. Upgrade pyarrow to a version that implements the function.
  2. Cast to a numpy-backed dtype (e.g. .astype('float64')) and apply the reduction there.
  3. Confirm the reduction name is in the supported set for this dtype before calling.

Example fix

// before
s = pd.Series([1, 2, 3], dtype="int64[pyarrow]")
s.<unsupported_reduce>()
// after
s = pd.Series([1, 2, 3], dtype="int64[pyarrow]")
s.astype("float64").<unsupported_reduce>()
Defensive patterns

Strategy: try-catch

Validate before calling

import pyarrow.compute as pc

def reduce_available(name) -> bool:
    alias = {"median":"quantile","prod":"product","std":"stddev","var":"variance","kurt":"kurtosis"}.get(name, name)
    return getattr(pc, alias, None) is not None

Type guard

def arrow_reduce_supported(name) -> bool:
    import pyarrow.compute as pc
    return getattr(pc, name, None) is not None

Try / catch

try:
    s.<reduce>()
except TypeError:
    s.astype("float64").<reduce>()

Prevention

When it happens

Trigger: Calling a reduction like .kurt() on a dtype where pandas has no pyarrow-compute mapping (e.g. .median() on some types in older pyarrow, or unsupported methods like rank via this path), or any custom reduction routed through _reduce without a pc equivalent.

Common situations: Calling statistical reductions not yet supported by the installed pyarrow; generic reduce-by-name dispatch in user code.

Related errors


AI-assisted analysis of pandas-dev/pandas@3b7651241d (2026-08-11). Data as JSON: /api/errors/3d0611b48356b510. Report an issue: GitHub.

Appendix: source

Thrown at pandas/core/arrays/arrow/array.py:2599

                )[0]
                return pc.binary_join(data_list, "")
        elif name in ["argmin", "argmax"]:
            return super()._reduce(name, skipna=skipna, **kwargs)

        else:
            pyarrow_name = {
                "median": "quantile",
                "prod": "product",
                "std": "stddev",
                "var": "variance",
                "kurt": "kurtosis",
            }.get(name, name)
            # error: Incompatible types in assignment
            # (expression has type "Optional[Any]", variable has type
            # "Callable[[Any, Any, KwArg(Any)], Any]")
            pyarrow_meth = getattr(pc, pyarrow_name, None)  # type: ignore[assignment]
            if pyarrow_meth is None:
                raise TypeError(
                    f"'{type(self).__name__}' with dtype {self.dtype} "
                    f"does not support operation '{name}'"
                )

        # GH51624: pyarrow defaults to min_count=1, pandas behavior is min_count=0
        if name in ["any", "all", "sum", "prod"] and "min_count" not in kwargs:
            kwargs["min_count"] = 0
        elif name == "median":
            # GH 52679: Use quantile instead of approximate_median
            kwargs["q"] = 0.5
        elif name in ["std", "var", "sem"] and "ddof" not in kwargs:
            # pyarrow defaults to ddof=0, pandas behavior is ddof=1
            kwargs["ddof"] = 1
        elif name in ["skew", "kurt"] and "biased" not in kwargs:
            kwargs["biased"] = False

        try:
            result = pyarrow_meth(data_to_reduce, skip_nulls=skipna, **kwargs)

View on GitHub (pinned to 3b7651241d)