pola-rs/polars · error · ModuleUpgradeRequiredError

pyarrow>=8.0.0 is required for `to_pandas("use_pyarrow_exten

Error message

pyarrow>=8.0.0 is required for `to_pandas("use_pyarrow_extension_array=True")`, found pyarrow {pa.__version__!r}

What it means

Raised by Series.to_pandas when use_pyarrow_extension_array=True but the installed pyarrow is older than 8.0.0. The pandas extension-array dtype requires that pyarrow version; upgrade pyarrow or drop the flag.

Source

Thrown at py-polars/src/polars/series/series.py:5097

        Pass `use_pyarrow_extension_array=True` to get a pandas Series backed by a
        PyArrow extension array. This will preserve null values.

        >>> s.to_pandas(use_pyarrow_extension_array=True)
        0       1
        1       2
        2    <NA>
        Name: b, dtype: int64[pyarrow]
        """
        if self.dtype == Object:
            # Can't convert via PyArrow, so do it via NumPy
            return pd.Series(self.to_numpy(), dtype=object, name=self.name)

        if use_pyarrow_extension_array:
            if parse_version(pd.__version__) < (1, 5):
                msg = f'pandas>=1.5.0 is required for `to_pandas("use_pyarrow_extension_array=True")`, found Pandas {pd.__version__}'
                raise ModuleUpgradeRequiredError(msg)
            if not _PYARROW_AVAILABLE or parse_version(pa.__version__) < (8, 0):
                raise ModuleUpgradeRequiredError(
                    f'pyarrow>=8.0.0 is required for `to_pandas("use_pyarrow_extension_array=True")`'
                    f", found pyarrow {pa.__version__!r}"
                    if _PYARROW_AVAILABLE
                    else ""
                )

        if isinstance(self.dtype, (Categorical, Enum)):
            return (
                self.to_frame()
                .to_pandas(
                    use_pyarrow_extension_array=use_pyarrow_extension_array, **kwargs
                )
                .iloc[:, 0]
            )
        else:
            pa_arr = self.to_arrow()

        if use_pyarrow_extension_array:

View on GitHub (pinned to 68506541d2)

Solutions

  1. Upgrade pyarrow: `pip install 'pyarrow>=8.0.0'` to use `to_pandas` with `use_pyarrow_extension_array=True`.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at py-polars/src/polars/series/series.py:5253 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pola-rs/polars@68506541d2 (2026-08-19). Data as JSON: /api/errors/65428fe5dbcad230. Report an issue: GitHub.