Что нового в 2.2.1 (22 февраля 2024)#

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

Улучшения#

  • Добавлен pyarrow pip extra, чтобы пользователи могли установить pandas и pyarrow через pip с pip install pandas[pyarrow] (GH 54466)

Исправленные регрессии#

  • Исправлена утечка памяти в read_csv() (GH 57039)

  • Исправлена регрессия производительности в Series.combine_first() (GH 55845)

  • Исправлена регрессия, вызывающая переполнение для меток времени, близких к минимальным (GH 57150)

  • Исправлена регрессия в concat() изменение давнего поведения, которое всегда сортировало ось не-конкатенации, когда ось была DatetimeIndex (GH 57006)

  • Исправлена регрессия в merge_ordered() вызов TypeError для fill_method="ffill" и how="left" (GH 57010)

  • Исправлена регрессия в pandas.testing.assert_series_equal() по умолчанию check_exact=True при проверке Index (GH 57067)

  • Исправлена регрессия в read_json() где Index будет возвращено вместо RangeIndex (GH 57429)

  • Исправлена регрессия в wide_to_long() вызов AttributeError для строковых столбцов (GH 57066)

  • Исправлена регрессия в DataFrameGroupBy.idxmin(), DataFrameGroupBy.idxmax(), SeriesGroupBy.idxmin(), SeriesGroupBy.idxmax() игнорируя skipna аргумент (GH 57040)

  • Исправлена регрессия в DataFrameGroupBy.idxmin(), DataFrameGroupBy.idxmax(), SeriesGroupBy.idxmin(), SeriesGroupBy.idxmax() где значения, содержащие минимальное или максимальное значение для типа данных, могли давать некорректные результаты (GH 57040)

  • Исправлена регрессия в CategoricalIndex.difference() вызов KeyError когда other содержит нулевые значения, отличные от NaN (GH 57318)

  • Исправлена регрессия в DataFrame.groupby() вызов ValueError при группировке по Series в некоторых случаях (GH 57276)

  • Исправлена регрессия в DataFrame.loc() вызов IndexError для неуникальных, маскированных индексов типа данных, где результат имеет более 10 000 строк (GH 57027)

  • Исправлена регрессия в DataFrame.loc() который необоснованно выдавал "предупреждение о несовместимом типе данных" при расширении с частичным индексом строк и несколькими столбцами (см. PDEP6) (GH 56503)

  • Исправлена регрессия в DataFrame.map() с na_action="ignore" не соблюдается для нулевых значений NumPy и ArrowDtypes (GH 57316)

  • Исправлена регрессия в DataFrame.merge() вызов ValueError для определенных типов сторонних массивов расширений (GH 57316)

  • Исправлена регрессия в DataFrame.query() со всеми NaT столбец с типом данных object (GH 57068)

  • Исправлена регрессия в DataFrame.shift() вызов AssertionError для axis=1 и пустой DataFrame (GH 57301)

  • Исправлена регрессия в DataFrame.sort_index() не обеспечивает стабильную сортировку для индекса с дубликатами (GH 57151)

  • Исправлена регрессия в DataFrame.to_dict() с orient='list' и типы datetime или timedelta, возвращающие целые числа (GH 54824)

  • Исправлена регрессия в DataFrame.to_json() преобразование nullable целых чисел в числа с плавающей точкой (GH 57224)

  • Исправлена регрессия в DataFrame.to_sql() когда method="multi" передается, а тип диалекта не Oracle (GH 57310)

  • Исправлена регрессия в DataFrame.transpose() с нуллифицируемыми расширенными типами данных, не имеющими F-последовательных данных, что потенциально может вызывать исключения при использовании (GH 57315)

  • Исправлена регрессия в DataFrame.update() выдача некорректных предупреждений о понижающем преобразовании (GH 57124)

  • Исправлена регрессия в DataFrameGroupBy.idxmin(), DataFrameGroupBy.idxmax(), SeriesGroupBy.idxmin(), SeriesGroupBy.idxmax() игнорируя skipna аргумент (GH 57040)

  • Исправлена регрессия в DataFrameGroupBy.idxmin(), DataFrameGroupBy.idxmax(), SeriesGroupBy.idxmin(), SeriesGroupBy.idxmax() где значения, содержащие минимальное или максимальное значение для типа данных, могли давать некорректные результаты (GH 57040)

  • Исправлена регрессия в ExtensionArray.to_numpy() вызов исключения для нечисловых маскированных типов данных (GH 56991)

  • Исправлена регрессия в Index.join() вызов TypeError при объединении пустого индекса с непустым индексом, содержащим значения смешанных типов данных (GH 57048)

  • Исправлена регрессия в Series.astype() введение десятичных знаков при преобразовании из целочисленного типа с пропущенными значениями в строковый тип данных (GH 57418)

  • Исправлена регрессия в Series.pct_change() вызов ValueError для пустого Series (GH 57056)

  • Исправлена регрессия в Series.to_numpy() когда dtype задан как float и данные содержат NaN (GH 57121)

  • Исправлена регрессия при сложении или вычитании DateOffset объекты с миллисекундными компонентами в datetime64 Index, Series, или DataFrame (GH 57529)

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

  • Исправлена ошибка в pandas.api.interchange.from_dataframe() что вызывало ошибку для Nullable integers (GH 55069)

  • Исправлена ошибка в pandas.api.interchange.from_dataframe() которое вызывало исключение для пустых входных данных (GH 56700)

  • Исправлена ошибка в pandas.api.interchange.from_dataframe() который не преобразовывал имена столбцов в строки (GH 55069)

  • Исправлена ошибка в DataFrame.__getitem__() для пустых DataFrame с включенной копированием при записи (GH 57130)

  • Исправлена ошибка в PeriodIndex.asfreq() который молча преобразовывал частоты, которые не поддерживаются как частоты периодов, вместо вызова ошибки (GH 56945)

Другие#

Примечание

The DeprecationWarning которая возникала при импорте pandas без установленного PyArrow, была удалена. Это решение было принято, потому что предупреждение было слишком назойливым для слишком многих пользователей, и было собрано много отзывов о решении сделать PyArrow обязательной зависимостью. Pandas в настоящее время рассматривает вопрос о том, следует ли добавлять PyArrow как жёсткую зависимость в версии 3.0. Заинтересованные пользователи могут следить за обсуждением здесь.

  • Добавлен аргумент skipna to DataFrameGroupBy.first(), DataFrameGroupBy.last(), SeriesGroupBy.first(), и SeriesGroupBy.last(); достижение skipna=False ранее был доступен через DataFrameGroupBy.nth(), но поведение было изменено в pandas 2.0.0 (GH 57019)

  • Добавлен аргумент skipna to Resampler.first(), Resampler.last() (GH 57019)

Участники#

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

  • Albert Villanova del Moral

  • Люк Мэнли

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

  • Marco Edward Gorelli

  • Мэтью Рёшке

  • Natalia Mokeeva

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

  • Patrick Hoefler

  • Richard Shadrach

  • Роберт Шмидтке +

  • Samuel Chai +

  • Thomas Li

  • William Ayd

  • dependabot[bot]