Skip to main content
`Ctrl`+`K`

# What’s new in 2.3.3 (September 29, 2025)

These are the changes in pandas 2.3.3. See Release notes for a full changelog including other versions of pandas.

## Pandas 2.3.3 is now compatible with Python 3.14

Pandas 2.3.3 is the first version of pandas that is generally compatible with the upcoming Python 3.14. For this release, wheels will be uploaded for normal Python 3.14 across all platforms, while wheels for free-threaded Python 3.14 will be available for Linux and macOS only.

As usual please report any bugs discovered to our issue tracker

## Improvements and fixes for the StringDtype

Most changes in this release are related to `StringDtype` which will become the default string dtype in pandas 3.0. See Upcoming changes in pandas 3.0 for more details.

### Improvements

- Update `DataFrame.select_dtypes()` to keep selecting `str` columns when specifying `include=["object"]` for backwards compatibility. In a future release, this will be deprecated and code for pandas 3+ should be updated to do `include=["str"]` (GH 61916)

- Support the `/` operation between a `pathlib.Path` object and a `StringDtype` Series, similarly as it works for object-dtype Series (GH 61940)

### Bug fixes

- Fix bug in `Series.str.replace()` using named capture groups (e.g., `\g<name>`) with the Arrow-backed dtype would raise an error (GH 57636)

- Fix regression in `Series.str.contains()`, `match()` and `fullmatch()` with a compiled regex and custom flags (GH 62240)

- Fix `Series.str.match()` and `fullmatch()` not matching patterns with groups correctly for the Arrow-backed string dtype (GH 61072)

- Fix bug in `groupby()` with `sum()` and unobserved categories resulting in `0` instead of the empty string `""` (GH 61909)

- Fix `Series.str.isdigit()` to correctly recognize unicode superscript characters as digits for `StringDtype` backed by PyArrow (GH 61466)

- Fix comparing a `StringDtype` Series with mixed objects raising an error (GH 60228)

- Fix error being raised when using a numpy ufunc with a Python-backed string array (GH 40800)

## Other changes

- The deprecation of using `Series.resample()` and `DataFrame.resample()` with a `PeriodIndex` (and the ‘convention’ keyword) has been undone. Resampling with a `PeriodIndex` is supported again, but a subset of methods that return incorrect results will raise an error in pandas 3.0 (GH 57033)

## Other bug fixes

- Fix memory leak in `DataFrame.to_json()` with datetime columns (GH 62204)

- Fixed regression in `DataFrame.from_records()` not initializing subclasses properly (GH 57008)

- The `DataFrame.iloc()` now works correctly with `copy_on_write` option when assigning values after subsetting the columns of a homogeneous DataFrame (GH 60309)

## Contributors

A total of 15 people contributed patches to this release. People with a “+” by their names contributed a patch for the first time.

- ChiLin Chiu

- Evgenii Mosikhin +

- Ian Hunt-Isaak +

- Joris Van den Bossche

- Laurie O +

- Lumberbot (aka Jack)

- Matthew Roeschke

- Nathan Goldbaum

- Patrick Hoefler

- Richard Shadrach

- Scott Talbert

- jbrockmendel

- pandas Development Team

- ptth222 +

- Álvaro Kothe +