Что нового в версии 2.2.0 (19 января 2024)#
Это изменения в pandas 2.2.0. См. Примечания к выпуску для полного списка изменений, включая другие версии pandas.
Предстоящие изменения в pandas 3.0#
pandas 3.0 принесет два более значительных изменения в поведение pandas по умолчанию.
Копирование при записи#
В настоящее время опциональный режим Copy-on-Write будет включен по умолчанию в pandas 3.0. Не будет возможности сохранить текущее поведение включенным. Новая семантика поведения объясняется в руководство пользователя о Copy-on-Write.
Новое поведение можно включить начиная с pandas 2.0 с помощью следующей опции:
pd.options.mode.copy_on_write = True
Это изменение вносит различные изменения в поведение pandas в отношении копий и представлений. Некоторые из этих изменений позволяют четкое устаревание, как изменения в цепочке присваиваний. Другие изменения более тонкие, и поэтому предупреждения скрыты за опцией, которую можно включить в pandas 2.2.
pd.options.mode.copy_on_write = "warn"
Этот режим будет предупреждать во многих различных сценариях, которые на самом деле не имеют отношения к большинству запросов. Мы рекомендуем изучить этот режим, но не обязательно избавляться от всех этих предупреждений. руководство по миграции подробнее объясняет процесс обновления.
Выделенный строковый тип данных (на основе Arrow) по умолчанию#
Исторически pandas представлял строковые столбцы с использованием типа данных NumPy object. Это представление имеет множество проблем, включая низкую производительность и большой объем памяти. Это изменится в pandas 3.0. pandas начнет определять строковые столбцы как новый string тип данных, основанный на Arrow, который представляет строки, расположенные в памяти непрерывно. Это обеспечивает значительное улучшение производительности и использования памяти.
Старое поведение:
In [1]: ser = pd.Series(["a", "b"])
Out[1]:
0 a
1 b
dtype: object
Новое поведение:
In [1]: ser = pd.Series(["a", "b"])
Out[1]:
0 a
1 b
dtype: string
Строковый тип данных, используемый в этих сценариях, в основном будет вести себя как NumPy object, включая семантику пропущенных значений и общие операции с этими столбцами.
Это изменение включает несколько дополнительных изменений в API:
В настоящее время указание
dtype="string"создаёт тип данных, основанный на строках Python, которые хранятся в массиве NumPy. Это изменится в pandas 3.0, этот тип данных будет создавать столбец строк, основанный на Arrow.Имена столбцов и Index также будут поддерживаться строками Arrow.
PyArrow станет обязательной зависимостью в pandas 3.0 для учёта этого изменения.
Эта логика вывода будущих типов данных может быть включена с помощью:
pd.options.future.infer_string = True
Улучшения#
Поддержка драйвера ADBC в to_sql и read_sql#
read_sql() и to_sql() теперь работают с Apache Arrow ADBC drivers. По сравнению с традиционными драйверами, используемыми через SQLAlchemy, драйверы ADBC должны обеспечить значительное повышение производительности, лучшую поддержку типов и более чистую обработку null-значений.
import adbc_driver_postgresql.dbapi as pg_dbapi
df = pd.DataFrame(
[
[1, 2, 3],
[4, 5, 6],
],
columns=['a', 'b', 'c']
)
uri = "postgresql://postgres:postgres@localhost/postgres"
with pg_dbapi.connect(uri) as conn:
df.to_sql("pandas_table", conn, index=False)
# for round-tripping
with pg_dbapi.connect(uri) as conn:
df2 = pd.read_sql("pandas_table", conn)
Система типов Arrow предлагает более широкий набор типов, которые могут более точно соответствовать тому, что предлагают базы данных, такие как PostgreSQL. Для иллюстрации обратите внимание на этот (неисчерпывающий) список типов, доступных в разных базах данных и бэкендах pandas:
numpy/pandas |
arrow |
postgres |
sqlite |
|---|---|---|---|
int16/Int16 |
int16 |
SMALLINT |
INTEGER |
int32/Int32 |
int32 |
INTEGER |
INTEGER |
int64/Int64 |
int64 |
BIGINT |
INTEGER |
float32 |
float32 |
REAL |
REAL |
float64 |
float64 |
DOUBLE PRECISION |
REAL |
object |
string |
TEXT |
TEXT |
bool |
|
BOOLEAN |
|
datetime64[ns] |
timestamp(us) |
ВРЕМЕННАЯ МЕТКА |
|
datetime64[ns,tz] |
timestamp(us,tz) |
TIMESTAMPTZ |
|
date32 |
ДАТА |
||
month_day_nano_interval |
INTERVAL |
||
бинарный |
BINARY |
BLOB |
|
decimal128 |
DECIMAL [1] |
||
list |
ARRAY [1] |
||
struct |
|
Сноски
Если вы заинтересованы в максимально возможном сохранении типов базы данных
на протяжении всего жизненного цикла вашего DataFrame, пользователям рекомендуется
использовать dtype_backend="pyarrow" аргумент read_sql()
# for round-tripping
with pg_dbapi.connect(uri) as conn:
df2 = pd.read_sql("pandas_table", conn, dtype_backend="pyarrow")
Это предотвратит преобразование ваших данных в традиционную систему типов pandas/NumPy, которая часто преобразует SQL-типы таким образом, что делает невозможным их обратное преобразование.
Полный список драйверов ADBC и их статус разработки см. в Статус реализации драйвера ADBC документация.
Создать pandas Series на основе одного или нескольких условий#
The Series.case_when() функция была добавлена для создания объекта Series на основе одного или нескольких условий. (GH 39154)
In [1]: import pandas as pd
In [2]: df = pd.DataFrame(dict(a=[1, 2, 3], b=[4, 5, 6]))
In [3]: default=pd.Series('default', index=df.index)
In [4]: default.case_when(
...: caselist=[
...: (df.a == 1, 'first'), # condition, replacement
...: (df.a.gt(1) & df.b.eq(5), 'second'), # condition, replacement
...: ],
...: )
...:
Out[4]:
0 first
1 second
2 default
dtype: object
to_numpy для nullable-типов NumPy и Arrow преобразует в подходящий dtype NumPy#
to_numpy для nullable типов NumPy и Arrow теперь будет преобразовываться в
подходящий dtype NumPy вместо object dtype для nullable и PyArrow-backed extension dtypes.
Старое поведение:
In [1]: ser = pd.Series([1, 2, 3], dtype="Int64")
In [2]: ser.to_numpy()
Out[2]: array([1, 2, 3], dtype=object)
Новое поведение:
In [5]: ser = pd.Series([1, 2, 3], dtype="Int64")
In [6]: ser.to_numpy()
Out[6]: array([1, 2, 3])
In [7]: ser = pd.Series([1, 2, 3], dtype="timestamp[ns][pyarrow]")
In [8]: ser.to_numpy()
Out[8]:
array(['1970-01-01T00:00:00.000000001', '1970-01-01T00:00:00.000000002',
'1970-01-01T00:00:00.000000003'], dtype='datetime64[ns]')
Тип данных NumPy по умолчанию (без аргументов) определяется следующим образом:
типы данных float преобразуются в NumPy floats
целочисленные типы данных без пропущенных значений преобразуются в целочисленные типы данных NumPy
целочисленные dtypes с пропущенными значениями приводятся к NumPy float dtypes и
NaNиспользуется как индикатор пропущенного значениялогические типы данных без пропущенных значений приводятся к типу данных NumPy bool
булевы типы данных с пропущенными значениями сохраняют объектный тип данных
типы datetime и timedelta преобразуются в типы Numpy datetime64 и timedelta64 соответственно и
NaTиспользуется как индикатор пропущенного значения
Series.struct аксессор для структурированных данных PyArrow#
The Series.struct аксессор предоставляет атрибуты и методы для обработки
данных с struct[pyarrow] Series типа dtype. Например,
Series.struct.explode() преобразует структурированные данные PyArrow в pandas DataFrame. (GH 54938)
In [9]: import pyarrow as pa
In [10]: series = pd.Series(
....: [
....: {"project": "pandas", "version": "2.2.0"},
....: {"project": "numpy", "version": "1.25.2"},
....: {"project": "pyarrow", "version": "13.0.0"},
....: ],
....: dtype=pd.ArrowDtype(
....: pa.struct([
....: ("project", pa.string()),
....: ("version", pa.string()),
....: ])
....: ),
....: )
....:
In [11]: series.struct.explode()
Out[11]:
project version
0 pandas 2.2.0
1 numpy 1.25.2
2 pyarrow 13.0.0
Используйте Series.struct.field() для индексации в (возможно вложенное)
поле структуры.
In [12]: series.struct.field("project")
Out[12]:
0 pandas
1 numpy
2 pyarrow
Name: project, dtype: string[pyarrow]
Аксессор Series.list для данных PyArrow list#
The Series.list аксессор предоставляет атрибуты и методы для обработки
данных с list[pyarrow] Series типа dtype. Например,
Series.list.__getitem__() позволяет индексировать списки pyarrow в Series. (GH 55323)
In [13]: import pyarrow as pa
In [14]: series = pd.Series(
....: [
....: [1, 2, 3],
....: [4, 5],
....: [6],
....: ],
....: dtype=pd.ArrowDtype(
....: pa.list_(pa.int64())
....: ),
....: )
....:
In [15]: series.list[0]
Out[15]:
0 1
1 4
2 6
dtype: int64[pyarrow]
Движок Calamine для read_excel()#
The calamine движок был добавлен в read_excel().
Он использует python-calamine, который предоставляет привязки Python для библиотеки Rust calamine.
Этот движок поддерживает файлы Excel (.xlsx, .xlsm, .xls, .xlsb) и электронных таблиц OpenDocument (.ods) (GH 50395).
Есть два преимущества этого движка:
Calamine часто быстрее других движков, некоторые тесты показывают результаты до 5 раз быстрее, чем 'openpyxl', 20 раз - 'odf', 4 раза - 'pyxlsb' и 1.5 раза - 'xlrd'. Но 'openpyxl' и 'pyxlsb' быстрее при чтении нескольких строк из больших файлов из-за ленивой итерации по строкам.
Calamine поддерживает распознавание даты и времени в
.xlsbфайлы, в отличие от 'pyxlsb', который является единственным другим движком в pandas, способным читать.xlsbфайлы.
pd.read_excel("path_to_file.xlsb", engine="calamine")
Для получения дополнительной информации см. Calamine (файлы Excel и ODS) в руководстве пользователя по инструментам ввода-вывода.
Другие улучшения#
to_sql()с параметром method, установленным вmultiработает с Oracle на бэкендеSeries.attrs/DataFrame.attrsтеперь использует deepcopy для распространенияattrs(GH 54134).get_dummies()теперь возвращает типы данных расширенийbooleanилиbool[pyarrow]которые совместимы с входным типом данных (GH 56273)read_csv()теперь поддерживаетon_bad_linesпараметр сengine="pyarrow"(GH 54480)read_sas()возвращаетdatetime64типы данных с разрешениями, лучше соответствующими тем, которые хранятся нативно в SAS, и избегает возврата object-dtype в случаях, которые не могут быть сохранены сdatetime64[ns]тип данных (GH 56127)read_spss()теперь возвращаетDataFrameкоторый хранит метаданные вDataFrame.attrs(GH 54264)tseries.api.guess_datetime_format()теперь является частью публичного API (GH 54727)DataFrame.apply()теперь позволяет использование numba (черезengine="numba") для JIT-компиляции переданной функции, позволяя потенциально ускорить выполнение (GH 54666)ExtensionArray._explode()метод интерфейса добавлен для реализации расширенных типовexplodeметод (GH 54833)ExtensionArray.duplicated()добавлено для реализации расширенных типовduplicatedметод (GH 55255)Series.ffill(),Series.bfill(),DataFrame.ffill(), иDataFrame.bfill()получили аргументlimit_area; сторонниеExtensionArrayавторам нужно добавить этот аргумент в метод_pad_or_backfill(GH 56492)Разрешить передачу
read_only,data_onlyиkeep_linksаргументы для openpyxl с использованиемengine_kwargsofread_excel()(GH 55027)Реализовать
Series.interpolate()иDataFrame.interpolate()дляArrowDtypeи маскированные типы данных (GH 56267)Реализовать маскированные алгоритмы для
Series.value_counts()(GH 54984)Реализовано
Series.dt()методы и атрибуты дляArrowDtypeсpyarrow.durationтип (GH 52284)Реализовано
Series.str.extract()дляArrowDtype(GH 56268)Улучшено сообщение об ошибке, которое появляется в
DatetimeIndex.to_period()с частотами, которые не поддерживаются как периодические частоты, например"BMS"(GH 56243)Улучшено сообщение об ошибке при создании
Periodс недопустимыми смещениями, такими как"QS"(GH 55785)Типы данных
string[pyarrow]иstring[pyarrow_numpy]теперь оба используютlarge_stringтип из PyArrow, чтобы избежать переполнения для длинных столбцов (GH 56259)
Значительные исправления ошибок#
Это исправления ошибок, которые могут привести к заметным изменениям в поведении.
merge() и DataFrame.join() теперь последовательно следуют задокументированному поведению сортировки#
В предыдущих версиях pandas, merge() и DataFrame.join() не всегда возвращал результат, соответствующий задокументированному поведению сортировки. Теперь pandas
следует задокументированному поведению сортировки в операциях слияния и объединения (GH 54611, GH 56426, GH 56443).
Как задокументировано, sort=True сортирует ключи соединения лексикографически в результирующем
DataFrame. С sort=False, порядок ключей соединения зависит от типа соединения (how ключевое слово):
how="left": сохранить порядок левых ключейhow="right": сохранить порядок правых ключейhow="inner": сохранить порядок левых ключейhow="outer": сортировка ключей лексикографически
Один пример с изменяющимся поведением — внутренние объединения с неуникальными ключами левого объединения
и sort=False:
In [16]: left = pd.DataFrame({"a": [1, 2, 1]})
In [17]: right = pd.DataFrame({"a": [1, 2]})
In [18]: result = pd.merge(left, right, how="inner", on="a", sort=False)
Старое поведение
In [5]: result
Out[5]:
a
0 1
1 1
2 2
Новое поведение
In [19]: result
Out[19]:
a
0 1
1 2
2 1
merge() и DataFrame.join() больше не переупорядочивает уровни при различии уровней#
В предыдущих версиях pandas, merge() и DataFrame.join() переупорядочивал уровни индекса при объединении двух индексов с разными уровнями (GH 34133).
In [20]: left = pd.DataFrame({"left": 1}, index=pd.MultiIndex.from_tuples([("x", 1), ("x", 2)], names=["A", "B"]))
In [21]: right = pd.DataFrame({"right": 2}, index=pd.MultiIndex.from_tuples([(1, 1), (2, 2)], names=["B", "C"]))
In [22]: left
Out[22]:
left
A B
x 1 1
2 1
In [23]: right
Out[23]:
right
B C
1 1 2
2 2 2
In [24]: result = left.join(right)
Старое поведение
In [5]: result
Out[5]:
left right
B A C
1 x 1 1 2
2 x 2 1 2
Новое поведение
In [25]: result
Out[25]:
left right
A B C
x 1 1 1 2
2 2 1 2
Повышенные минимальные версии для зависимостей#
Для опциональные зависимости Общая рекомендация — использовать последнюю версию. Необязательные зависимости ниже минимальной протестированной версии могут всё ещё работать, но не считаются поддерживаемыми. В следующей таблице перечислены необязательные зависимости, для которых была повышена минимальная протестированная версия.
Пакет |
Новая минимальная версия |
|---|---|
beautifulsoup4 |
4.11.2 |
blosc |
1.21.3 |
bottleneck |
1.3.6 |
fastparquet |
2022.12.0 |
fsspec |
2022.11.0 |
gcsfs |
2022.11.0 |
lxml |
4.9.2 |
matplotlib |
3.6.3 |
numba |
0.56.4 |
numexpr |
2.8.4 |
qtpy |
2.3.0 |
openpyxl |
3.1.0 |
psycopg2 |
2.9.6 |
pyreadstat |
1.2.0 |
pytables |
3.8.0 |
pyxlsb |
1.0.10 |
s3fs |
2022.11.0 |
scipy |
1.10.0 |
sqlalchemy |
2.0.0 |
tabulate |
0.9.0 |
xarray |
2022.12.0 |
xlsxwriter |
3.0.5 |
zstandard |
0.19.0 |
pyqt5 |
5.15.8 |
tzdata |
2022.7 |
См. Зависимости и Необязательные зависимости подробнее.
Другие изменения API#
Хэш-значения расширенных типов данных с поддержкой NULL изменились для повышения производительности операции хэширования (GH 56507)
check_exactтеперь действует только для типов данных с плавающей запятой вtesting.assert_frame_equal()иtesting.assert_series_equal(). В частности, целочисленные типы данных всегда проверяются точно (GH 55882)
Устаревшие функции#
Цепное присваивание#
В рамках подготовки к крупным предстоящим изменениям в поведении копирования / представления в pandas 3.0 (Copy-on-Write (CoW), PDEP-7), мы начали устаревание цепное присваивание.
Цепное присваивание происходит, когда вы пытаетесь обновить DataFrame или Series pandas через две последовательные операции индексирования. В зависимости от типа и порядка этих операций это в настоящее время работает или не работает.
Типичный пример выглядит следующим образом:
df = pd.DataFrame({"foo": [1, 2, 3], "bar": [4, 5, 6]})
# first selecting rows with a mask, then assigning values to a column
# -> this has never worked and raises a SettingWithCopyWarning
df[df["bar"] > 5]["foo"] = 100
# first selecting the column, and then assigning to a subset of that column
# -> this currently works
df["foo"][df["bar"] > 5] = 100
Этот второй пример цепочечного присваивания в настоящее время работает для обновления исходного df.
Это больше не будет работать в pandas 3.0, поэтому мы начали устаревание этого:
>>> df["foo"][df["bar"] > 5] = 100
FutureWarning: ChainedAssignmentError: behaviour will change in pandas 3.0!
You are setting values through chained assignment. Currently this works in certain cases, but when using Copy-on-Write (which will become the default behaviour in pandas 3.0) this will never work to update the original DataFrame or Series, because the intermediate object on which we are setting values will behave as a copy.
A typical example is when you are setting values in a column of a DataFrame, like:
df["col"][row_indexer] = value
Use `df.loc[row_indexer, "col"] = values` instead, to perform the assignment in a single step and ensure this keeps updating the original `df`.
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
Вы можете исправить это предупреждение и убедиться, что ваш код готов для pandas 3.0, удалив
использование цепочечного присваивания. Обычно это можно сделать, выполнив присваивание
в один шаг, используя, например, .loc. Для примера выше мы можем сделать:
df.loc[df["bar"] > 5, "foo"] = 100
Такое же устаревание применяется к методам inplace, выполняемым цепочкой, например:
>>> df["foo"].fillna(0, inplace=True)
FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.
For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.
Когда цель — обновить столбец в DataFrame df, альтернатива здесь —
вызвать метод на df самого себя, например, df.fillna({"foo": 0}, inplace=True).
Подробнее см. в руководство по миграции.
Устарели псевдонимы M, Q, Y, и т.д. в пользу ME, QE, YE, и т.д. для смещений#
Устарели следующие псевдонимы частот (GH 9586):
смещения |
устаревшие псевдонимы |
новые псевдонимы |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Например:
Предыдущее поведение:
In [8]: pd.date_range('2020-01-01', periods=3, freq='Q-NOV')
Out[8]:
DatetimeIndex(['2020-02-29', '2020-05-31', '2020-08-31'],
dtype='datetime64[ns]', freq='Q-NOV')
Будущее поведение:
In [26]: pd.date_range('2020-01-01', periods=3, freq='QE-NOV')
Out[26]: DatetimeIndex(['2020-02-29', '2020-05-31', '2020-08-31'], dtype='datetime64[ns]', freq='QE-NOV')
Устаревшее автоматическое понижение типа#
Устарел автоматический понижающий кастинг результатов типа object в ряде методов. Это молча изменяло dtype труднопредсказуемым образом, поскольку поведение зависело от значений. Кроме того, pandas отходит от молчаливых изменений dtype (GH 54710, GH 54261).
Эти методы:
Явный вызов DataFrame.infer_objects() для воспроизведения текущего поведения в будущем.
result = result.infer_objects(copy=False)
Или явно преобразуйте все числа с плавающей точкой в целые с помощью astype.
Установите следующую опцию, чтобы перейти на будущее поведение:
In [9]: pd.set_option("future.no_silent_downcasting", True)
Другие устаревшие функции#
Изменено
Timedelta.resolution_string()для возвратаh,min,s,ms,us, иnsвместоH,T,S,L,U, иN, для совместимости с соответствующими устареваниями в псевдонимах частоты (GH 52536)Устаревший
offsets.Day.delta,offsets.Hour.delta,offsets.Minute.delta,offsets.Second.delta,offsets.Milli.delta,offsets.Micro.delta,offsets.Nano.delta, используйтеpd.Timedelta(obj)вместо (GH 55498)Устаревший
pandas.api.types.is_interval()иpandas.api.types.is_period(), используйтеisinstance(obj, pd.Interval)иisinstance(obj, pd.Period)вместо (GH 55264)Устаревший
read_gbq()иDataFrame.to_gbq(). Используйтеpandas_gbq.read_gbqиpandas_gbq.to_gbqвместо https://pandas-gbq.readthedocs.io/en/latest/api.html (GH 55525)Устаревший
DataFrameGroupBy.fillna()иSeriesGroupBy.fillna(); используйтеDataFrameGroupBy.ffill(),DataFrameGroupBy.bfill()для заполнения вперед и назад илиDataFrame.fillna()для заполнения одним значением (или эквиваленты Series) (GH 55718)Устаревший
DateOffset.is_anchored(), используйтеobj.n == 1для неподклассов Tick (для Tick это всегда было False) (GH 55388)Устаревший
DatetimeArray.__init__()иTimedeltaArray.__init__(), используйтеarray()вместо (GH 55623)Устаревший
Index.format(), используйтеindex.astype(str)илиindex.map(formatter)вместо (GH 55413)Устаревший
Series.ravel(), базовый массив уже одномерный, поэтому ravel не нужен (GH 52511)Устаревший
Series.resample()иDataFrame.resample()сPeriodIndex(и ключевое слово 'convention'), преобразовать вDatetimeIndex(с.to_timestamp()) перед повторной выборкой вместо (GH 53481). Примечание: это устаревание было позже отменено в pandas 2.3.3 (GH 57033)Устаревший
Series.view(), используйтеSeries.astype()вместо этого для изменения типа данных (GH 20251)Устаревший
offsets.Tick.is_anchored(), используйтеFalseвместо (GH 55388)Устаревший
core.internalsчленыBlock,ExtensionBlock, иDatetimeTZBlock, используйте публичные API вместо (GH 55139)Устаревший
year,month,quarter,day,hour,minute, иsecondключевые слова вPeriodIndexконструктор, используйтеPeriodIndex.from_fields()вместо (GH 55960)Устарело принятие типа в качестве аргумента в
Index.view(), вызывайте без аргументов (GH 55709)Устарело разрешение нецелочисленных
periodsаргумент вdate_range(),timedelta_range(),period_range(), иinterval_range()(GH 56036)Устарело разрешение неключевых аргументов в
DataFrame.to_clipboard()(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_csv()кромеpath_or_buf(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_dict()(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_excel()кромеexcel_writer(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_gbq()кромеdestination_table(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_hdf()кромеpath_or_buf(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_html()кромеbuf(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_json()кромеpath_or_buf(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_latex()кромеbuf(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_markdown()кромеbuf(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_parquet()кромеpath(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_pickle()кромеpath(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_string()кромеbuf(GH 54229)Устарело разрешение неключевых аргументов в
DataFrame.to_xml()кромеpath_or_buffer(GH 54229)Устарело разрешение передачи
BlockManagerобъекты вDataFrameилиSingleBlockManagerобъекты вSeries(GH 52419)Устаревшее поведение
Index.insert()с индексом object-dtype, неявно выполняющим вывод типа для результата, явно вызовитеresult.infer_objects(copy=False)для старого поведения вместо (GH 51363)Устаревшее приведение не-датаподобных значений (в основном строк) в
Series.isin()иIndex.isin()сdatetime64,timedelta64, иPeriodDtypeтипы данных (GH 53111)Устаревший вывод типа данных в
Index,SeriesиDataFrameконструкторы при передаче pandas-ввода, вызывают.infer_objectsна входе для сохранения текущего поведения (GH 56012)Устаревший вывод типа данных при установке
IndexвDataFrame, выполните явное приведение вместо этого (GH 56102)Устарело: включение групп в вычисления при использовании
DataFrameGroupBy.apply()иDataFrameGroupBy.resample(); передатьinclude_groups=Falseдля исключения групп (GH 7155)Устаревшее индексирование
Indexс булевым индексатором нулевой длины (GH 55820)Устарело: не передавать кортеж в
DataFrameGroupBy.get_groupилиSeriesGroupBy.get_groupпри группировке по списку длиной 1 (GH 25971)Устаревшая строка
ASобозначая частоту вYearBeginи строкиAS-DEC,AS-JAN, и т.д., обозначающие годовые частоты с различными началами финансового года (GH 54275)Устаревшая строка
Aобозначая частоту вYearEndи строкиA-DEC,A-JAN, и т.д., обозначающие годовые частоты с различными концами финансового года (GH 54275)Устаревшая строка
BASобозначая частоту вBYearBeginи строкиBAS-DEC,BAS-JAN, и т.д., обозначающие годовые частоты с различными началами финансового года (GH 54275)Устаревшая строка
BAобозначая частоту вBYearEndи строкиBA-DEC,BA-JAN, и т.д., обозначающие годовые частоты с различными концами финансового года (GH 54275)Устаревшие строки
H,BH, иCBHобозначая частоты вHour,BusinessHour,CustomBusinessHour(GH 52536)Устаревшие строки
H,S,U, иNобозначая единицы вto_timedelta()(GH 52536)Устаревшие строки
H,T,S,L,U, иNобозначая единицы вTimedelta(GH 52536)Устаревшие строки
T,S,L,U, иNобозначая частоты вMinute,Second,Milli,Micro,Nano(GH 52536)Устаревшая поддержка объединения разобранных столбцов даты и времени в
read_csv()вместе сkeep_date_colключевое слово (GH 55569)Устарел
DataFrameGroupBy.grouperиSeriesGroupBy.grouper; эти атрибуты будут удалены в будущей версии pandas (GH 56521)Устарел
Groupingатрибутыgroup_index,result_index, иgroup_arraylike; они будут удалены в будущей версии pandas (GH 56148)Устарел
delim_whitespaceключевое слово вread_csv()иread_table(), используйтеsep="\\s+"вместо (GH 55569)Устарел
errors="ignore"опция вto_datetime(),to_timedelta(), иto_numeric(); явно перехватывайте исключения вместо (GH 54467)Устарел
fastpathключевое слово вSeriesконструктор (GH 20110)Устарел
kindключевое слово вSeries.resample()иDataFrame.resample(), явно привестиindexвместо (GH 55895)Устарел
ordinalключевое слово вPeriodIndex, используйтеPeriodIndex.from_ordinals()вместо (GH 55960)Устарел
unitключевое слово вTimedeltaIndexконструкция, используйтеto_timedelta()вместо (GH 55499)Устарел
verboseключевое слово вread_csv()иread_table()(GH 55569)Устаревшее поведение
DataFrame.replace()иSeries.replace()сCategoricalDtype; в будущей версии replace будет изменять значения, сохраняя категории. Для изменения категорий используйтеser.cat.rename_categoriesвместо (GH 55147)Устаревшее поведение
Series.value_counts()иIndex.value_counts()с типом данных object; в будущей версии они не будут выполнять определение типа данных для результирующегоIndex, сделайтеresult.index = result.index.infer_objects()для сохранения старого поведения (GH 56161)Устаревшее значение по умолчанию для
observed=FalseвDataFrame.pivot_table(); будетTrueв будущей версии (GH 56236)Устаревшие классы тестов расширений
BaseNoReduceTests,BaseBooleanReduceTests, иBaseNumericReduceTests, используйтеBaseReduceTestsвместо (GH 54663)Устаревшая опция
mode.data_managerиArrayManager; толькоBlockManagerбудет доступно в будущих версиях (GH 55043)Устаревшая предыдущая реализация
DataFrame.stack; укажитеfuture_stack=Trueдля принятия будущей версии (GH 53515)
Улучшения производительности#
Улучшение производительности в
testing.assert_frame_equal()иtesting.assert_series_equal()(GH 55949, GH 55971)Улучшение производительности в
concat()сaxis=1и объекты с невыровненными индексами (GH 55084)Улучшение производительности в
get_dummies()(GH 56089)Улучшение производительности в
merge()иmerge_ordered()при соединении по отсортированным возрастающим ключам (GH 56115)Улучшение производительности в
merge_asof()когдаbyне являетсяNone(GH 55580, GH 55678)Улучшение производительности в
read_stata()для файлов со многими переменными (GH 55515)Улучшение производительности в
DataFrame.groupby()при агрегировании типов данных временных меток и длительностей pyarrow (GH 55031)Улучшение производительности в
DataFrame.join()при объединении по неупорядоченным категориальным индексам (GH 56345)Улучшение производительности в
DataFrame.loc()иSeries.loc()при индексировании сMultiIndex(GH 56062)Улучшение производительности в
DataFrame.sort_index()иSeries.sort_index()при индексированииMultiIndex(GH 54835)Улучшение производительности в
DataFrame.to_dict()при преобразовании DataFrame в словарь (GH 50990)Улучшение производительности в
Index.difference()(GH 55108)Улучшение производительности в
Index.sort_values()когда индекс уже отсортирован (GH 56128)Улучшение производительности в
MultiIndex.get_indexer()когдаmethodне являетсяNone(GH 55839)Улучшение производительности в
Series.duplicated()для pyarrow dtypes (GH 55255)Улучшение производительности в
Series.str.get_dummies()когда dtype равен"string[pyarrow]"или"string[pyarrow_numpy]"(GH 56110)Улучшение производительности в
Series.str()методы (GH 55736)Улучшение производительности в
Series.value_counts()иSeries.mode()для маскированных типов данных (GH 54984, GH 55340)Улучшение производительности в
DataFrameGroupBy.nunique()иSeriesGroupBy.nunique()(GH 55972)Улучшение производительности в
SeriesGroupBy.idxmax(),SeriesGroupBy.idxmin(),DataFrameGroupBy.idxmax(),DataFrameGroupBy.idxmin()(GH 54234)Улучшение производительности при хешировании nullable массива расширений (GH 56507)
Улучшение производительности при индексации в неуникальный индекс (GH 55816)
Улучшение производительности при индексировании более чем 4 ключами (GH 54550)
Улучшение производительности при локализации времени в UTC (GH 55241)
Исправления ошибок#
Категориальный#
Categorical.isin()вызовInvalidIndexErrorдля категориальных, содержащих перекрывающиесяIntervalзначения (GH 34974)Ошибка в
CategoricalDtype.__eq__()возвращаяFalseдля неупорядоченных категориальных данных со смешанными типами (GH 55468)Ошибка при приведении типа
pa.dictionarytoCategoricalDtypeиспользуяpa.DictionaryArrayкак категории (GH 56672)
Datetimelike#
Ошибка в
DatetimeIndexконструкция при передаче одновременноtzи либоdayfirstилиyearfirstигнорируя dayfirst/yearfirst (GH 55813)Ошибка в
DatetimeIndexпри передаче ndarray типа object из объектов float иtzнеправильная локализация результата (GH 55780)Ошибка в
Series.isin()сDatetimeTZDtypeтип данных и значения сравнения, которые всеNaTнекорректно возвращал все-Falseдаже если серия содержитNaTзаписи (GH 56427)Ошибка в
concat()вызовAttributeErrorпри конкатенации полностью NA DataFrame сDatetimeTZDtypedtype DataFrame (GH 52093)Ошибка в
testing.assert_extension_array_equal()что могло использовать неправильную единицу измерения при сравнении разрешений (GH 55730)Ошибка в
to_datetime()иDatetimeIndexпри передаче списка смешанных строковых и числовых типов, ошибочно вызывая (GH 55780)Ошибка в
to_datetime()иDatetimeIndexпри передаче объектов смешанного типа с миксом часовых поясов или миксом учёта часовых поясов, не удаётся поднятьValueError(GH 55693)Ошибка в
Tick.delta()с очень большими делениями, вызываяOverflowErrorвместоOutOfBoundsTimedelta(GH 55503)Ошибка в
DatetimeIndex.shift()с разрешением не в наносекундах, некорректно возвращающий с разрешением в наносекундах (GH 56117)Ошибка в
DatetimeIndex.union()возвращение типа object для индексов с учётом часового пояса с одинаковым часовым поясом, но разными единицами измерения (GH 55238)Ошибка в
Index.is_monotonic_increasing()иIndex.is_monotonic_decreasing()всегда кэшироватьIndex.is_unique()какTrueкогда первое значение в индексеNaT(GH 55755)Ошибка в
Index.view()в тип данных datetime64 с неподдерживаемым разрешением, неправильно вызывая (GH 55710)Ошибка в
Series.dt.round()с разрешением, отличным от наносекунд, иNaTзаписи, ошибочно вызывающиеOverflowError(GH 56158)Ошибка в
Series.fillna()с типами данных с разрешением не в наносекундах и векторными значениями более высокого разрешения, возвращающими некорректные (внутренне повреждённые) результаты (GH 56410)Ошибка в
Timestamp.unit()неправильно выводился из строки формата ISO8601 с разрешением в минуты или часы и смещением часового пояса (GH 56208)Ошибка в
.astypeпреобразование из более высокого разрешенияdatetime64тип данных с более низким разрешениемdatetime64тип данных (например,datetime64[us]->datetime64[ms]) тихо переполняется значениями, близкими к нижней границе реализации (GH 55979)Ошибка при добавлении или вычитании
Weekсмещение кdatetime64Series,Index, илиDataFrameстолбец с разрешением не в наносекундах возвращает некорректные результаты (GH 55583)Ошибка в сложении или вычитании
BusinessDayсмещение сoffsetатрибут к не-наносекундномуIndex,Series, илиDataFrameстолбец выдает некорректные результаты (GH 55608)Ошибка в сложении или вычитании
DateOffsetобъектов с микросекундными компонентами вdatetime64Index,Series, илиDataFrameстолбцы с разрешением, отличным от наносекундного (GH 55595)Ошибка при сложении или вычитании очень больших
Tickобъекты сTimestampилиTimedeltaобъекты, вызывающиеOverflowErrorвместоOutOfBoundsTimedelta(GH 55503)Ошибка при создании
Index,Series, илиDataFrameс не-наносекунднымDatetimeTZDtypeи входные данные, которые выходят за пределы с наносекундным разрешением, некорректно вызываютOutOfBoundsDatetime(GH 54620)Ошибка при создании
Index,Series, илиDataFrameс не-наносекунднымdatetime64(илиDatetimeTZDtype) из смешанно-числовых входных данных, обрабатывая их как наносекунды вместо кратных единице dtype (что происходило бы с не смешанными числовыми входными данными) (GH 56004)Ошибка при создании
Index,Series, илиDataFrameс не-наносекунднымdatetime64dtype и входные данные, которые выходят за пределы дляdatetime64[ns]некорректное возбуждениеOutOfBoundsDatetime(GH 55756)Ошибка при парсинге строк даты и времени с наносекундным разрешением в не-ISO8601 форматах, некорректно обрезающая субмикросекундные компоненты (GH 56051)
Ошибка в разборе строк даты-времени с субсекундным разрешением и конечными нулями, некорректно определяющая секундное или миллисекундное разрешение (GH 55737)
Ошибка в результатах
to_datetime()с аргументом типа с плавающей запятой сunitне соответствует поточечным результатамTimestamp(GH 56037)Исправлена регрессия, где
concat()вызывал ошибку при конкатенацииdatetime64столбцы с различным разрешением (GH 53641)
Timedelta#
Ошибка в
Timedeltaconstruction raisingOverflowErrorвместоOutOfBoundsTimedelta(GH 55503)Ошибка в отображении (
__repr__) изTimedeltaIndexиSeriesсо значениями timedelta64 с разрешением не в наносекундах, где все записи являются кратными 24 часам, не использующими компактное представление, применяемое в случаях с наносекундами (GH 55405)
Часовые пояса#
Ошибка в
AbstractHolidayCalendarгде данные часового пояса не распространялись при вычислении праздничных дней (GH 54580)Ошибка в
Timestampконструкция с неоднозначным значением иpytzчасовой пояс не вызывал ошибкуpytz.AmbiguousTimeError(GH 55657)Ошибка в
Timestamp.tz_localize()сnonexistent="shift_forwardвокруг UTC+0 во время перехода на летнее время (GH 51501)
Числовой#
Ошибка в
read_csv()сengine="pyarrow"вызывая ошибки округления для больших целых чисел (GH 52505)Ошибка в
Series.__floordiv__()иSeries.__truediv__()дляArrowDtypeс целочисленными типами данных, вызывающая ошибку для больших делителей (GH 56706)Ошибка в
Series.__floordiv__()дляArrowDtypeс целочисленными dtypes, вызывающими для больших значений (GH 56645)Ошибка в
Series.pow()неправильное заполнение пропущенных значений (GH 55512)Ошибка в
Series.replace()иDataFrame.replace()соответствующий float0.0сFalseи наоборот (GH 55398)Ошибка в
Series.round()вызов для обнуляемого булевого типа данных (GH 55936)
Преобразование#
Ошибка в
DataFrame.astype()при вызове сstrна распакованном массиве - массив может измениться на месте (GH 54654)Ошибка в
DataFrame.astype()гдеerrors="ignore"не имел эффекта для типов расширений (GH 54654)Ошибка в
Series.convert_dtypes()не преобразовывать все столбцы с NA вnull[pyarrow](GH 55346)Ошибка в :meth:
DataFrame.locне выдавал "предупреждение о несовместимом dtype" (см. PDEP6) при присвоенииSeriesс другим типом данных с использованием полного сеттера столбца (например,df.loc[:, 'a'] = incompatible_value) (GH 39584)
Строки#
Ошибка в
pandas.api.types.is_string_dtype()при проверке массива объектов без элементов на строковый тип данных (GH 54661)Ошибка в
DataFrame.apply()ошибка приengine="numba"и столбцы или индекс имеютStringDtype(GH 56189)Ошибка в
DataFrame.reindex()не совпадающийIndexсstring[pyarrow_numpy]тип данных (GH 56106)Ошибка в
Index.str.cat()всегда приводя результат к типу object dtype (GH 56157)Ошибка в
Series.__mul__()дляArrowDtypeсpyarrow.stringdtype иstring[pyarrow]для бэкенда pyarrow (GH 51970)Ошибка в
Series.str.find()когдаstart < 0дляArrowDtypeсpyarrow.string(GH 56411)Ошибка в
Series.str.fullmatch()когдаdtype=pandas.ArrowDtype(pyarrow.string()))разрешает частичные совпадения, когда регулярное выражение заканчивается на литерал //$ (GH 56652)Ошибка в
Series.str.replace()когдаn < 0дляArrowDtypeсpyarrow.string(GH 56404)Ошибка в
Series.str.startswith()иSeries.str.endswith()с аргументами типаtuple[str, ...]дляArrowDtypeсpyarrow.stringтип данных (GH 56579)Ошибка в
Series.str.startswith()иSeries.str.endswith()с аргументами типаtuple[str, ...]дляstring[pyarrow](GH 54942)Ошибка в операциях сравнения для
dtype="string[pyarrow_numpy]"вызывая исключение, если типы данных не могут быть сравнены (GH 56008)
Interval#
Ошибка в
Interval__repr__не отображает смещения UTC дляTimestampграницы. Кроме того, теперь будут отображаться компоненты часа, минуты и секунды (GH 55015)Ошибка в
IntervalIndex.factorize()иSeries.factorize()сIntervalDtypeс интервалами datetime64 или timedelta64, не сохраняющими единицы измерения, отличные от наносекунд (GH 56099)Ошибка в
IntervalIndex.from_arrays()при передачеdatetime64илиtimedelta64массивы с несовпадающим разрешением, создающие недопустимыйIntervalArrayобъект (GH 55714)Ошибка в
IntervalIndex.from_tuples()вызов исключения, если подтип является нуллабельным расширенным типом данных (GH 56765)Ошибка в
IntervalIndex.get_indexer()с интервалами datetime или timedelta, некорректно сопоставляющими целочисленные цели (GH 47772)Ошибка в
IntervalIndex.get_indexer()с интервалами даты и времени с учетом часового пояса, некорректно сопоставляемыми с последовательностью целей без учета часового пояса (GH 47772)Ошибка при установке значений на
SeriesсIntervalIndexиспользование среза неправильно вызывает (GH 54722)
Индексирование#
Ошибка в
DataFrame.loc()изменение булева индексатора приDataFrameимеетMultiIndex(GH 56635)Ошибка в
DataFrame.loc()при установкеSeriesпреобразование типа данных расширения в тип данных NumPy (GH 55604)Ошибка в
Index.difference()не возвращает уникальный набор значений, когдаotherпуст илиotherсчитается несравнимым (GH 55113)Ошибка при установке
Categoricalзначения вDataFrameс типами данных numpy, вызывающимиRecursionError(GH 52927)Исправлена ошибка при создании нового столбца с пропущенными значениями при установке одного строкового значения (GH 56204)
Отсутствует#
Ошибка в
DataFrame.update()не обновлялся на месте для типов datetime64 с учётом часового пояса (GH 56227)
MultiIndex#
Ошибка в
MultiIndex.get_indexer()не вызываяValueErrorкогдаmethodпредоставлен и индекс немонотонный (GH 53452)
I/O#
Ошибка в
read_csv()гдеengine="python"не учитывалchunksizeаргумент, когдаskiprowsбыл указан (GH 56323)Ошибка в
read_csv()гдеengine="python"вызывалTypeErrorкогда вызываемый объектskiprowsи был указан размер чанка (GH 55677)Ошибка в
read_csv()гдеon_bad_lines="warn"будет записывать вstderrвместо вызова предупреждения Python; теперь это даетerrors.ParserWarning(GH 54296)Ошибка в
read_csv()сengine="pyarrow"гдеquotecharигнорировался (GH 52266)Ошибка в
read_csv()сengine="pyarrow"гдеusecolsне работал с CSV без заголовков (GH 54459)Ошибка в
read_excel(), сengine="xlrd"(xlsфайлы) выдают ошибку, когда файл содержитNaNилиInf(GH 54564)Ошибка в
read_json()не обрабатывает преобразование dtype правильно, еслиinfer_stringустановлен (GH 56195)Ошибка в
DataFrame.to_excel(), сOdsWriter(odsфайлы) запись логического/строкового значения (GH 54994)Ошибка в
DataFrame.to_hdf()иread_hdf()сdatetime64dtypes с разрешением не в наносекундах не корректно сохраняются при сериализации (GH 55622)Ошибка в
DataFrame.to_stata()вызов для типов данных расширений (GH 54671)Ошибка в
read_excel()сengine="odf"(odsфайлы) когда строковая ячейка содержит аннотацию (GH 55200)Ошибка в
read_excel()с файлом ODS без кэшированной форматированной ячейки для значений с плавающей запятой (GH 55219)Ошибка, где
DataFrame.to_json()вызоветOverflowErrorвместоTypeErrorс неподдерживаемыми типами NumPy (GH 55403)
Period#
Ошибка в
PeriodIndexпостроение, когда более одного изdata,ordinalи**fieldsпередаются, не вызывая ошибкуValueError(GH 55961)Ошибка в
Periodтихое заворачивание при сложении вместо вызова исключенияOverflowError(GH 55503)Ошибка при приведении из
PeriodDtypeсastypetodatetime64илиDatetimeTZDtypeс нексекундной единицей измерения, неправильно возвращающие с наносекундной единицей (GH 55958)
Построение графиков#
Ошибка в
DataFrame.plot.box()сvert=Falseи MatplotlibAxesсоздан с помощьюsharey=True(GH 54941)Ошибка в
DataFrame.plot.scatter()отбрасывание строковых столбцов (GH 56142)Ошибка в
Series.plot()при повторном использованииaxобъект не вызывает ошибку, когдаhowключевое слово передано (GH 55953)
Groupby/resample/rolling#
Ошибка в
DataFrameGroupBy.idxmin(),DataFrameGroupBy.idxmax(),SeriesGroupBy.idxmin(), иSeriesGroupBy.idxmax()не сохранялCategoricalтип данных, когда индекс былCategoricalIndexкоторый содержал значения NA (GH 54234)Ошибка в
DataFrameGroupBy.transform()иSeriesGroupBy.transform()когдаobserved=Falseиf="idxmin"илиf="idxmax"неправильно вызывал исключение на ненаблюдаемых категориях (GH 54234)Ошибка в
DataFrameGroupBy.value_counts()иSeriesGroupBy.value_counts()может привести к некорректной сортировке, если столбцы DataFrame или имя Series являются целыми числами (GH 55951)Ошибка в
DataFrameGroupBy.value_counts()иSeriesGroupBy.value_counts()не учитывалsort=FalseвDataFrame.groupby()иSeries.groupby()(GH 55951)Ошибка в
DataFrameGroupBy.value_counts()иSeriesGroupBy.value_counts()будет сортировать по пропорциям, а не по частотам, когдаsort=Trueиnormalize=True(GH 55951)Ошибка в
DataFrame.asfreq()иSeries.asfreq()сDatetimeIndexс некнаносекундным разрешением, некорректно преобразующимся в наносекундное разрешение (GH 55958)Ошибка в
DataFrame.ewm()при передачеtimesс non-nanoseconddatetime64илиDatetimeTZDtypeтип данных (GH 56262)Ошибка в
DataFrame.groupby()иSeries.groupby()где группировка по комбинацииDecimalи значения NA завершались ошибкой, когдаsort=True(GH 54847)Ошибка в
DataFrame.groupby()для подклассов DataFrame при выборе подмножества столбцов для применения функции к (GH 56761)Ошибка в
DataFrame.resample()не учитываяclosedиlabelаргументы дляBusinessDay(GH 55282)Ошибка в
DataFrame.resample()при передискретизации наArrowDtypeofpyarrow.timestampилиpyarrow.durationтип (GH 55989)Ошибка в
DataFrame.resample()где границы бинов были некорректны дляBusinessDay(GH 55281)Ошибка в
DataFrame.resample()где границы бинов были некорректны дляMonthBegin(GH 55271)Ошибка в
DataFrame.rolling()иSeries.rolling()где повторяющиеся индексы типа даты/времени рассматриваются как последовательные, а не равные, сclosed='left'иclosed='neither'(GH 20712)Ошибка в
DataFrame.rolling()иSeries.rolling()где либоindexилиonстолбец былArrowDtypeсpyarrow.timestampтип (GH 55849)
Изменение формы#
Ошибка в
concat()игнорируяsortпараметр при передачеDatetimeIndexиндексы (GH 54769)Ошибка в
concat()переименованиеSeriesкогдаignore_index=False(GH 15047)Ошибка в
merge_asof()вызовTypeErrorкогдаbydtype не являетсяobject,int64, илиuint64(GH 22794)Ошибка в
merge_asof()вызов некорректной ошибки для строкового типа данных (GH 56444)Ошибка в
merge_asof()при использованииTimedeltaдопуск наArrowDtypeстолбец (GH 56486)Ошибка в
merge()не вызывая исключение при слиянии столбцов datetime со столбцами timedelta (GH 56455)Ошибка в
merge()не вызывает ошибку при слиянии строковых столбцов с числовыми столбцами (GH 56441)Ошибка в
merge()не сортировка для нового строкового типа данных (GH 56442)Ошибка в
merge()возвращает столбцы в неправильном порядке, когда левая и/или правая часть пуста (GH 51929)Ошибка в
DataFrame.melt()где возникало исключение, еслиvar_nameне был строкой (GH 55948)Ошибка в
DataFrame.melt()где это не сохранило бы дату и время (GH 55254)Ошибка в
DataFrame.pivot_table()где поле строки некорректно, когда столбцы имеют числовые имена (GH 26568)Ошибка в
DataFrame.pivot()с числовыми столбцами и расширенным типом данных для данных (GH 56528)Ошибка в
DataFrame.stack()сfuture_stack=Trueне сохранял значения NA в индексе (GH 56573)
Разреженный#
Ошибка в
arrays.SparseArray.take()при использовании другого значения заполнения, чем значение заполнения массива (GH 55181)
Другие#
DataFrame.__dataframe__()не поддерживал большие строки pyarrow (GH 56702)Ошибка в
DataFrame.describe()при форматировании процентилей в результате процентиль 99.999% округляется до 100% (GH 55765)Ошибка в
api.interchange.from_dataframe()где возникла ошибкаNotImplementedErrorпри обработке пустых строковых столбцов (GH 56703)Ошибка в
cut()иqcut()сdatetime64значения типа данных с единицами измерения, отличными от наносекунд, некорректно возвращают корзины в наносекундных единицах (GH 56101)Ошибка в
cut()некорректно разрешалось разделение дат с учетом часового пояса на интервалы без учета часового пояса (GH 54964)Ошибка в
infer_freq()иDatetimeIndex.inferred_freq()с недельными частотами и разрешениями не в наносекундах (GH 55609)Ошибка в
DataFrame.apply()где передачаraw=Trueигнорируетсяargsпередается в применяемую функцию (GH 55009)Ошибка в
DataFrame.from_dict()что всегда будет сортировать строки созданногоDataFrame. (GH 55683)Ошибка в
DataFrame.sort_index()при передачеaxis="columns"иignore_index=TrueвызовValueError(GH 56478)Ошибка в отображении
infзначения внутриDataFrameсuse_inf_as_naопция включена (GH 55483)Ошибка при отображении
SeriesсMultiIndexкогда имя одного из уровней индекса равно 0, и это имя не отображается (GH 55415)Ошибка в сообщении об ошибке при присвоении пустого
DataFrameв столбец (GH 55956)Ошибка, когда строки, похожие на время, приводились к
ArrowDtypeсpyarrow.time64тип (GH 56463)Исправлено ложное предупреждение об устаревании от
numba>= 0.58.0 при передаче numpy ufunc вcore.window.Rolling.applyсengine="numba"(GH 55247)
Участники#
Всего 162 человека внесли патчи в этот выпуск. Люди с «+» рядом с их именами внесли патч впервые.
AG
Aaron Rahman +
Abdullah Ihsan Secer +
Абхиджит Део +
Adrian D’Alessandro
Ахмад Мустафа Анис +
Amanda Bizzinotto
Amith KK +
Aniket Patil +
Antonio Fonseca +
Артур Барсегян
Ben Greiner
Bill Blum +
Boyd Kane
Damian Kula
Dan King +
Даниэль Вайндл +
Daniele Nicolodi
David Poznik
David Toneian +
Dea María Léon
Deepak George +
Dmitriy +
Dominique Garmier +
Donald Thevalingam +
Doug Davis +
Dukastlik +
Elahe Sharifi +
Eric Han +
Fangchen Li
Francisco Alfaro +
Гадеа Отрик +
Guillaume Lemaitre
Hadi Abdi Khojasteh
Hedeer El Showk +
Huanghz2001 +
Isaac Virshup
Issam +
Itay Azolay +
Itayazolay +
Jaca +
Джек МакИвор +
JackCollins91 +
James Spencer +
Jay
Jessica Greene
Jirka Borovec +
Йоханна Трост +
John C +
Joris Van den Bossche
José Lucas Mayer +
José Lucas Silva Mayer +
Жуан Андраде +
Kai Mühlbauer
Катарина Тилкинг, MD +
Kazuto Haruguchi +
Kevin
Lawrence Mitchell
Linus +
Linus Sommer +
Louis-Émile Robitaille +
Люк Мэнли
Lumberbot (он же Джек)
Maggie Liu +
MainHanzo +
Марк Гарсия
Marco Edward Gorelli
Марко Горелли
Martin Šícho +
Mateusz Sokół
Matheus Felipe +
Мэтью Рёшке
Маттиас Бюссонье
Maxwell Bileschi +
Michael Tiemann
Michał Górny
Molly Bowers +
Moritz Schubert +
NNLNR +
Natalia Mokeeva
Nils Müller-Wendt +
Omar Elbaz
Команда разработчиков Pandas
Paras Gupta +
Parthi
Patrick Hoefler
Paul Pellissier +
Paul Uhlenbruck +
Филип Майер
Philippe THOMY +
Quang Nguyễn
Raghav
Rajat Subhra Mukherjee
Ralf Gommers
Randolf Scholz +
Richard Shadrach
Rob +
Rohan Jain +
Ryan Gibson +
Sai-Suraj-27 +
Samuel Oranyeli +
Sara Bonati +
Себастьян Берг
Sergey Zakharov +
Shyamala Venkatakrishnan +
StEmGeo +
Stefanie Molin
Стейн де Гойер +
Тьяго Гариани +
Thomas A Caswell
Thomas Baumann +
Thomas Guillet +
Томас Лазарус +
Thomas Li
Tim Hoffmann
Tim Swast
Tom Augspurger
Toro +
Torsten Wörtwein
Ville Aikas +
Vinita Parasrampuria +
Vyas Ramasubramani +
William Andrea
William Ayd
Willian Wang +
Xiao Yuan
Yao Xiao
Yves Delley
Zemux1613 +
Ziad Kermadi +
aaron-robeson-8451 +
aram-cinnamon +
caneff +
ccccjone +
chris-caballero +
кобальт
color455nm +
denisrei +
dependabot[bot]
jbrockmendel
jfadia +
johanna.trost +
kgmuzungu +
mecopur +
mhb143 +
morotti +
mvirts +
omar-elbaz
paulreece
pre-commit-ci[bot]
raj-thapa
rebecca-palmer
rmhowe425
rohanjain101
shiersansi +
smij720
srkds +
taytzehao
torext
vboxuser +
xzmeng +
yashb +