Что нового в 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
Исправления ошибок#
Ошибка в
DataFrameGroupBy.min(),DataFrameGroupBy.max(),Resampler.min(),Resampler.max()где все значения NA строкового типа возвращали float вместо строкового типа (GH 60810)Ошибка в
DataFrame.join()неправильное понижение типа индексов с типом object (GH 61771)Ошибка в
DataFrame.sum()сaxis=1,DataFrameGroupBy.sum()илиSeriesGroupBy.sum()сskipna=True, иResampler.sum()со всеми значениями NA вStringDtypeпривело к0вместо пустой строки""(GH 60229)Исправлена ошибка в
DataFrame.explode()иSeries.explode()где методы завершались бы с ошибкойdtype="str"(GH 61623)Исправлена ошибка при распаковке объектов, запакованных в версиях pandas до 2.3.0, которые использовали
StringDtype(GH 61763)
Участники#
Всего 10 человек внесли патчи в этот выпуск. Люди со знаком "+" рядом с именами внесли патч впервые.
David Krych
Ирв Ластиг
Joris Van den Bossche
Lumberbot (он же Джек)
Марк Гарсия
Мэтью Рёшке
Команда разработчиков Pandas
Ralf Gommers
Richard Shadrach
jbrockmendel