Что нового в 2.3.1 (7 июля 2025)#

Это изменения в pandas 2.3.1. См. Примечания к выпуску для полного списка изменений, включая другие версии pandas.

Улучшения и исправления для StringDtype#

Большинство изменений в этом выпуске связаны с StringDtype который станет типом строк по умолчанию в pandas 3.0. См. Предстоящие изменения в pandas 3.0 для получения дополнительной информации.

Сравнения между различными строковыми типами данных#

В предыдущих версиях сравнение Series различных строковых типов данных (например, pd.StringDtype("pyarrow", na_value=pd.NA) против pd.StringDtype("python", na_value=np.nan)) привело бы к несоответствующему результирующему типу данных или некорректному вызову (GH 60639). pandas теперь будет использовать иерархию

object < (python, NaN) < (pyarrow, NaN) < (python, NA) < (pyarrow, NA)

в определении результирующего dtype при сравнении различных строковых dtype. Некоторые примеры:

  • Когда pd.StringDtype("pyarrow", na_value=pd.NA) сравнивается с любым другим строковым типом данных, результат всегда будет boolean[pyarrow].

  • Когда pd.StringDtype("python", na_value=pd.NA) сравнивается с pd.StringDtype("pyarrow", na_value=np.nan), результат будет boolean, массив расширения с поддержкой nullable от NumPy.

  • Когда pd.StringDtype("python", na_value=pd.NA) сравнивается с pd.StringDtype("python", na_value=np.nan), результат будет boolean, массив расширения с поддержкой nullable от NumPy.

Операции с множествами индексов игнорируют пустой RangeIndex и Index типа object#

При включении future.infer_string опция, Index операции над множествами (например, объединение или пересечение) теперь будут игнорировать тип данных пустого RangeIndex или пустой Index с object dtype при определении dtype результирующего Index (GH 60797).

Это гарантирует, что объединение такого пустого Index со строками правильно определит строковый dtype, а не по умолчанию object dtype. Например:

>>> pd.options.future.infer_string = True
>>> df = pd.DataFrame()
>>> df.columns.dtype
dtype('int64')               # default RangeIndex for empty columns
>>> df["a"] = [1, 2, 3]
>>> df.columns.dtype
  # new columns use string dtype instead of object dtype

Исправления ошибок#

Участники#

Всего 10 человек внесли патчи в этот выпуск. Люди со знаком "+" рядом с именами внесли патч впервые.

  • David Krych

  • Ирв Ластиг

  • Joris Van den Bossche

  • Lumberbot (он же Джек)

  • Марк Гарсия

  • Мэтью Рёшке

  • Команда разработчиков Pandas

  • Ralf Gommers

  • Richard Shadrach

  • jbrockmendel