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, and both wheels for free-threaded and normal Python 3.14 will be uploaded for this release.

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

For contributors, please see /usr/share/doc/contributors_list.txt or https://github.com/pandas-dev/pandas/graphs/contributors