What’s new in 3.0.6 (September 17, 2026)#

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

Pandas 3.0.6 is now compatible with Python 3.15#

Pandas 3.0.6 is the first version of pandas that is generally compatible with the upcoming Python 3.15, and binary wheels will be available on PyPI for all supported platforms.

Fixed regressions#

  • Fixed a regression in read_csv() where a mixed-dtype column selected by usecols raised IndexError instead of emitting a DtypeWarning, and where that warning named the wrong column or the wrong index (GH 67375)

  • Fixed a regression in DataFrame.plot.bar() and DataFrame.plot.barh() raising AttributeError for a regularly-spaced DatetimeIndex whose freq attribute is unset (GH 66771)

  • Fixed a regression in Series.str.split(), Series.str.rsplit(), Series.str.partition(), and Series.str.rpartition() on CategoricalDtype Series with expand=False returning stringified lists/tuples instead of actual lists/tuples (GH 66341)

  • Fixed a regression in Timestamp.tz_convert() and Timestamp.tz_localize() and their Index and Series counterparts returning a UTC offset a few minutes off for dates before the specified timezone adopted a standard time (typically early 20th century); this only affected older systems whose tzdata was compiled with a toolchain from between 2013 and 2018, such as Amazon Linux 2 and RHEL 8 and its derivatives (GH 67066)

  • Fixed a regression in full-slice assignment (df.loc[:, "col"] = value) into a PyArrow-backed array where the result shared memory with value, so later modifying value also changed the assigned-to object, violating Copy-on-Write semantics (GH 67990)

  • Fixed a bug in setting with .loc or .iloc using a boolean mask to select the columns into a 1-column DataFrame with an extension dtype, which surfaced as a regression for a DataFrame with string data (GH 66527, GH 66255)

  • Fixed a regression in read_csv() where sep=None raised TypeError: object of type 'NoneType' has no len() instead of sniffing the separator with the python engine; passing sep=None together with engine="c" or engine="pyarrow", which cannot sniff the separator, again raises an informative ValueError instead of raising TypeError or silently parsing each line as a single column (GH 66639)

  • Fixed a regression in Series.interpolate() with method="linear" and a pyarrow-backed dtype leaving consecutive and trailing missing values unfilled, and truncating interpolated values for integer dtypes; the result now matches the equivalent masked (e.g. Int64) dtype (GH 65345)

Bug fixes#

  • Fixed a bug in RangeIndex where missing Copy-on-Write reference tracking allowed external modification via a Series to silently corrupt the index (GH 67060)

  • Fixed memory leak in read_csv() with engine="c" when a string or category column failed to decode, for example invalid UTF-8 under encoding="utf-8" and the default encoding_errors="strict" (GH 67931)

Contributors#

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

  • Apoorv Darshan +

  • Benhur Stephen +

  • Fangchen Li

  • Joris Van den Bossche

  • Lumberbot (aka Jack)

  • Matthew Roeschke

  • Natalia Mokeeva

  • Parth Saini +

  • jbrockmendel

  • pandas Development Team

  • Álvaro Kothe