Что нового в версии 0.23.2 (5 июля 2018)#

Это минорный релиз с исправлениями ошибок в серии 0.23.x и включает некоторые небольшие исправления регрессий и исправления ошибок. Мы рекомендуем всем пользователям обновиться до этой версии.

Примечание

pandas 0.23.2 — первая версия pandas, совместимая с Python 3.7 (GH 20552)

Предупреждение

Начиная с 1 января 2019 года, релизы функций pandas будут поддерживать только Python 3. См. Удаление Python 2.7 подробнее.

Логические редукции по всему DataFrame#

DataFrame.all() и DataFrame.any() теперь принимают axis=None для сокращения по всем осям до скаляра (GH 19976)

In [1]: df = pd.DataFrame({"A": [1, 2], "B": [True, False]})

In [2]: df.all(axis=None)
Out[2]: False

Это также обеспечивает совместимость с NumPy 1.15, который теперь передает в DataFrame.all. С NumPy 1.15 и pandas 0.23.1 или более ранними, numpy.all() больше не будет сокращаться по каждой оси:

>>> # NumPy 1.15, pandas 0.23.1
>>> np.any(pd.DataFrame({"A": [False], "B": [False]}))
A    False
B    False
dtype: bool

В pandas 0.23.2 это будет правильно возвращать False, как было в NumPy < 1.15.

In [3]: np.any(pd.DataFrame({"A": [False], "B": [False]}))
Out[3]: False

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

  • Исправлена регрессия в to_csv() при некорректной обработке файлоподобного объекта (GH 21471)

  • Повторно разрешены повторяющиеся имена уровней MultiIndex. Доступ к уровню с дублирующимся именем по имени всё ещё вызывает ошибку (GH 19029).

  • Ошибка в обоих DataFrame.first_valid_index() и Series.first_valid_index() вызывается для строкового индекса с дублирующимися значениями (GH 21441)

  • Исправлена печать DataFrame с иерархическими столбцами с длинными именами (GH 21180)

  • Исправлена регрессия в reindex() и groupby() с MultiIndex или несколькими ключами, содержащими категориальные значения даты-времени (GH 21390).

  • Исправлена регрессия в унарных отрицательных операциях с типом данных object (GH 21380)

  • Ошибка в Timestamp.ceil() и Timestamp.floor() когда метка времени кратна частоте округления (GH 21262)

  • Исправлена регрессия в to_clipboard() который по умолчанию копировал датафреймы с разделителем пробела вместо табуляции (GH 21104)

Изменения сборки#

  • Исходные и бинарные дистрибутивы больше не включают файлы тестовых данных, что приводит к меньшим размерам загрузки. Тесты, зависящие от этих файлов данных, будут пропущены при использовании pandas.test(). (GH 19320)

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

Преобразование

  • Ошибка при построении Index с итератором или генератором (GH 21470)

  • Ошибка в Series.nlargest() для знаковых и беззнаковых целочисленных типов данных, когда присутствует минимальное значение (GH 21426)

Индексирование

  • Ошибка в Index.get_indexer_non_unique() с категориальным ключом (GH 21448)

  • Ошибка в операциях сравнения для MultiIndex где ошибка возникала при сравнении на равенство/неравенство с участием MultiIndex с nlevels == 1 (GH 21149)

  • Ошибка в DataFrame.drop() поведение не является согласованным для уникальных и неуникальных индексов (GH 21494)

  • Ошибка в DataFrame.duplicated() с большим количеством столбцов, вызывающим 'превышена максимальная глубина рекурсии' (GH 21524).

I/O

  • Ошибка в read_csv() который вызывал некорректное возникновение ошибки, когда nrows=0, low_memory=True, и index_col не был None (GH 21141)

  • Ошибка в json_normalize() при форматировании record_prefix с целочисленными столбцами (GH 21536)

Категориальный

  • Ошибка в отображении Series с Categorical dtype в редких условиях в Python 2.7 (GH 21002)

Часовые пояса

  • Ошибка в Timestamp и DatetimeIndex где передача Timestamp локализованный после перехода на летнее время возвращал бы дату и время до перехода (GH 20854)

  • Ошибка при сравнении DataFrame с учетом часового пояса DatetimeIndex столбцы с переходом на летнее время, который вызывал KeyError (GH 19970)

  • Ошибка в DatetimeIndex.shift() где AssertionError вызывал бы при сдвиге через DST (GH 8616)

  • Ошибка в Timestamp конструктор, где передача недопустимого обозначения смещения часового пояса (Z) не вызовет ValueError (GH 8910)

  • Ошибка в Timestamp.replace() где замена на границе перехода на летнее время сохраняла некорректное смещение (GH 7825)

  • Ошибка в DatetimeIndex.reindex() при переиндексации tz-наивного и tz-осведомленного DatetimeIndex (GH 8306)

  • Ошибка в DatetimeIndex.resample() при понижающей дискретизации через границу перехода на летнее время (GH 8531)

Timedelta

  • Ошибка в Timedelta где ненулевые временные дельты короче 1 микросекунды считались False (GH 21484)

Участники#

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

  • David Krych

  • Jacopo Rota +

  • Jeff Reback

  • Jeremy Schendel

  • Joris Van den Bossche

  • Kalyan Gokhale

  • Мэтью Рёшке

  • Michael Odintsov +

  • Ming Li

  • Пьетро Баттистон

  • Tom Augspurger

  • Uddeshya Singh

  • Vu Le +

  • alimcmaster1 +

  • david-liu-brattle-1 +

  • gfyoung

  • jbrockmendel