2.2.0 版本新功能 (2024 年 1 月 19 日)#

以下是 pandas 2.2.0 版本中的变更。有关包含其他 pandas 版本在内的完整变更日志,请参阅发布说明

pandas 3.0 中即将发生的变更#

pandas 3.0 将带来两个对 pandas 默认行为的重大变更。

Copy-on-Write#

目前可选的 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

在这些场景中使用的 string 数据类型将大体上像 NumPy object 那样工作,包括缺失值语义以及对这些列的通用操作。

此变更包括对整个 API 的一些额外修改:

  • 目前,指定 dtype="string" 会创建一个由存储在 NumPy 数组中的 Python 字符串支持的 dtype。这将在 pandas 3.0 中发生变化,此 dtype 将创建一个由 Arrow 支持的字符串列。

  • 列名和 Index 也将由 Arrow 字符串支持。

  • 为适应此变更,PyArrow 将成为 pandas 3.0 的必需依赖项。

未未来的 dtype 推断逻辑可以通过以下方式启用:

pd.options.future.infer_string = True

增强功能#

to_sql 和 read_sql 中的 ADBC 驱动程序支持#

read_sql()to_sql() 现在支持 Apache Arrow ADBC 驱动程序。与通过 SQLAlchemy 使用的传统驱动程序相比,ADBC 驱动程序应提供显著的性能改进、更好的类型支持和更清晰的 nullability 处理。

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

bool_

BOOLEAN

datetime64[ns]

timestamp(us)

TIMESTAMP

datetime64[ns,tz]

timestamp(us,tz)

TIMESTAMPTZ

date32

DATE

month_day_nano_interval

INTERVAL

binary

BINARY

BLOB

decimal128

DECIMAL [1]

list

ARRAY [1]

struct

COMPOSITE TYPE

[1]

注脚

如果您有兴趣在整个 DataFrame 生命周期中尽可能最好地保留数据库类型,建议用户利用 read_sql() 函数的 dtype_backend="pyarrow" 参数。

# 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#

已添加 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

NumPy nullable 和 Arrow 类型上的 to_numpy 转换为合适的 NumPy dtype#

NumPy nullable 和 Arrow 类型上的 to_numpy 现在将转换为合适的 NumPy dtype,而不是用于 nullable 和 PyArrow 支持的扩展 dtypes 的 object dtype。

旧行为

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 dtype(不带任何参数)确定规则如下:

  • float dtypes 被转换为 NumPy floats

  • 没有缺失值的 integer dtypes 被转换为 NumPy integer dtypes

  • 带有缺失值的 integer dtypes 被转换为 NumPy float dtypes,并使用 NaN 作为缺失值指示符。

  • 没有缺失值的 boolean dtypes 被转换为 NumPy bool dtype

  • 带有缺失值的 boolean dtypes 保留 object dtype

  • datetime 和 timedelta 类型分别转换为 Numpy datetime64 和 timedelta64 类型,并使用 NaT 作为缺失值指示符。

用于 PyArrow 结构化数据的 Series.struct 访问器#

Series.struct 访问器提供了用于处理 struct[pyarrow] dtype Series 数据属性和方法。例如,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() 索引(可能嵌套的)struct 字段。

In [12]: series.struct.field("project")
Out[12]: 
0     pandas
1      numpy
2    pyarrow
Name: project, dtype: string[pyarrow]

用于 PyArrow 列表数据的 Series.list 访问器#

Series.list 访问器提供了用于处理 list[pyarrow] dtype Series 数据属性和方法。例如,Series.list.__getitem__() 允许索引 Series 中的 pyarrow 列表。(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]

用于 read_excel() 的 Calamine 引擎#

calamine 引擎已添加到 read_excel() 函数中。它使用 python-calamine,该库为 Rust 库 calamine 提供 Python 绑定。此引擎支持 Excel 文件(.xlsx.xlsm.xls.xlsb)和 OpenDocument 电子表格(.ods)。(GH 50395)

此引擎有两个优点:

  1. Calamine 通常比其他引擎更快,一些基准测试显示结果比 ‘openpyxl’ 快 5 倍,比 ‘odf’ 快 20 倍,比 ‘pyxlsb’ 快 4 倍,比 ‘xlrd’ 快 1.5 倍。但是,由于对行进行惰性迭代,‘openpyxl’ 和 ‘pyxlsb’ 在读取大型文件中的少量行时更快。

  2. Calamine 支持识别 .xlsb 文件中的 datetime,而 ‘pyxlsb’ 是 pandas 中唯一能读取 .xlsb 文件的其他引擎。

pd.read_excel("path_to_file.xlsb", engine="calamine")

更多信息请参阅 IO 工具用户指南中的Calamine (Excel 和 ODS 文件)

其他增强功能#

值得注意的错误修复#

这些错误修复可能会带来值得注意的行为变化。

merge()DataFrame.join() 现在一致遵循文档中描述的排序行为#

在之前的 pandas 版本中,merge()DataFrame.join() 返回的结果并不总是遵循文档中描述的排序行为。pandas 现在在 merge 和 join 操作中遵循文档中描述的排序行为。(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 变更#

弃用#

链式赋值#

为准备 pandas 3.0 中即将发生的关于复制/视图行为的重大变更(写时复制 (Copy-on-Write / CoW), PDEP-7),我们开始弃用链式赋值 (chained assignment)。

链式赋值发生在您尝试通过两个连续的索引操作来更新 pandas DataFrame 或 Series 时。根据这些操作的类型和顺序,这目前有时有效,有时无效。

一个典型的示例如下:

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.ac.cn/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 methods),例如

>>> 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)

更多详细信息请参阅迁移指南

对于偏移量(offsets),弃用别名 MQY 等,推荐使用 MEQEYE#

弃用了以下频率别名(GH 9586

偏移量

已弃用的别名

新别名

MonthEnd (月末)

M

ME

BusinessMonthEnd (工作日月末)

BM

BME

SemiMonthEnd (半月末)

SM

SME

CustomBusinessMonthEnd (自定义工作日月末)

CBM

CBME

QuarterEnd (季度末)

Q

QE

BQuarterEnd (工作日季度末)

BQ

BQE

YearEnd (年末)

Y

YE

BYearEnd (工作日年末)

BY

BYE

例如

旧行为:

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')

弃用自动向下转型(downcasting)#

弃用了多种方法中对 object 数据类型(dtype)结果的自动向下转型。由于该行为依赖于值,这会以难以预测的方式静默地改变数据类型。此外,pandas 正在逐步淘汰静默的数据类型改变(GH 54710, GH 54261)。

这些方法包括

将来请显式调用 DataFrame.infer_objects() 以复制当前行为。

result = result.infer_objects(copy=False)

或者使用 astype 将所有舍入后的浮点数显式转换为整数。

设置以下选项可选择启用未来行为

In [9]: pd.set_option("future.no_silent_downcasting", True)

其他弃用#

性能改进#

Bug 修复#

Categorical#

  • 修复了当 categorical 包含重叠的 Interval 值时,Categorical.isin() 引发 InvalidIndexError 的问题 (GH 34974)

  • 修复了 CategoricalDtype.__eq__() 对于包含混合类型的无序 categorical 数据返回 False 的 bug (GH 55468)

  • 修复了使用 pa.DictionaryArray 作为类别将 pa.dictionary 强制转换为 CategoricalDtype 时出现的 bug (GH 56672)

日期时间相关 (Datetimelike)#

  • 修复了构建 DatetimeIndex 时,同时传递 tzdayfirstyearfirst 但忽略 dayfirst/yearfirst 的 bug (GH 55813)

  • 修复了向 DatetimeIndex 传递包含 float 对象的 object-dtype ndarray 和 tz 时,错误地本地化结果的 bug (GH 55780)

  • 修复了 Series.isin() 对于 DatetimeTZDtype dtype 且比较值全部为 NaT 时,即使 series 包含 NaT 条目也错误地返回全 False 的 bug (GH 56427)

  • 修复了 concat() 在连接全 NA 的 DataFrame 和 DatetimeTZDtype dtype 的 DataFrame 时引发 AttributeError 的 bug (GH 52093)

  • 修复了 testing.assert_extension_array_equal() 在比较分辨率时可能使用错误单位的 bug (GH 55730)

  • 修复了 to_datetime()DatetimeIndex 在传递包含混合字符串和数字类型的列表时错误地引发异常的 bug (GH 55780)

  • 修复了 to_datetime()DatetimeIndex 在传递具有混合时区或混合时区感知性的混合类型对象时未能引发 ValueError 的 bug (GH 55693)

  • 修复了 Tick.delta() 对于非常大的 ticks 引发 OverflowError 而不是 OutOfBoundsTimedelta 的 bug (GH 55503)

  • 修复了 DatetimeIndex.shift() 对于非纳秒分辨率错误地返回纳秒分辨率结果的 bug (GH 56117)

  • 修复了 DatetimeIndex.union() 对于具有相同时区但不同单位的时区感知索引返回 object dtype 的 bug (GH 55238)

  • 修复了当索引中第一个值为 NaT 时,Index.is_monotonic_increasing()Index.is_monotonic_decreasing() 总是将 Index.is_unique() 缓存为 True 的 bug (GH 55755)

  • 修复了 Index.view() 转换为具有不支持分辨率的 datetime64 dtype 时错误地引发异常的 bug (GH 55710)

  • 修复了 Series.dt.round() 对于非纳秒分辨率且包含 NaT 条目时错误地引发 OverflowError 的 bug (GH 56158)

  • 修复了 Series.fillna() 对于非纳秒分辨率 dtypes 和更高分辨率向量值返回错误(内部损坏)结果的 bug (GH 56410)

  • 修复了 Timestamp.unit() 从具有分钟或小时分辨率及有时区偏移的 ISO8601 格式字符串错误推断的 bug (GH 56208)

  • 修复了 .astype 从更高分辨率的 datetime64 dtype 转换为较低分辨率的 datetime64 dtype(例如 datetime64[us]->datetime64[ms])时,在接近下限值时静默溢出的 bug (GH 55979)

  • 修复了对具有非纳秒分辨率的 datetime64 SeriesIndexDataFrame 列添加或减去 Week offset 时返回错误结果的 bug (GH 55583)

  • 修复了对非纳秒 IndexSeriesDataFrame 列添加或减去带有 offset 属性的 BusinessDay offset 时给出错误结果的 bug (GH 55608)

  • 修复了对具有非纳秒分辨率的 datetime64 IndexSeriesDataFrame 列添加或减去带有微秒部分的 DateOffset 对象时出现的 bug (GH 55595)

  • 修复了对 TimestampTimedelta 对象添加或减去非常大的 Tick 对象时引发 OverflowError 而不是 OutOfBoundsTimedelta 的 bug (GH 55503)

  • 修复了使用非纳秒 DatetimeTZDtype 和在纳秒分辨率下会超出范围的输入创建 IndexSeriesDataFrame 时错误地引发 OutOfBoundsDatetime 的 bug (GH 54620)

  • 修复了使用混合数字输入创建带有非纳秒 datetime64(或 DatetimeTZDtype)的 IndexSeriesDataFrame 时,将其视为纳秒而不是 dtype 单位的倍数(非混合数字输入会发生这种情况)的 bug (GH 56004)

  • 修复了使用非纳秒 datetime64 dtype 和对于 datetime64[ns] 会超出范围的输入创建 IndexSeriesDataFrame 时错误地引发 OutOfBoundsDatetime 的 bug (GH 55756)

  • 修复了使用非 ISO8601 格式解析带有纳秒分辨率的日期时间字符串时,错误地截断亚微秒部分的 bug (GH 56051)

  • 修复了解析带有亚秒分辨率和尾随零的日期时间字符串时,错误地推断为秒或毫秒分辨率的 bug (GH 55737)

  • 修复了 to_datetime() 使用浮点 dtype 参数且 unitTimestamp 的逐点结果不匹配时,结果不正确的 bug (GH 56037)

  • 修复了 concat() 在连接分辨率不同的 datetime64 列时会引发错误的回归 bug (GH 53641)

Timedelta#

  • 在使用 Timedelta 构造时,引发 OverflowError 而不是 OutOfBoundsTimedelta 的错误 (GH 55503)

  • 在渲染 (__repr__) 具有 timedelta64 值(非纳秒分辨率,且所有条目都是 24 小时的倍数)的 TimedeltaIndexSeries 时,未能使用纳秒情况下的紧凑表示形式的错误 (GH 55405)

时区#

  • AbstractHolidayCalendar 中,计算节假日时时区数据未被传播的错误 (GH 54580)

  • 使用模糊值和 pytz 时区构建 Timestamp 时,未能引发 pytz.AmbiguousTimeError 的错误 (GH 55657)

  • 在夏令时期间,使用 nonexistent="shift_forward 对 UTC+0 附近的 Timestamp.tz_localize() 进行本地化时出现的错误 (GH 51501)

数值#

转换#

  • 在未反序列化的数组上使用 str 调用 DataFrame.astype() 时,数组可能发生原地修改的错误 (GH 54654)

  • DataFrame.astype() 中,对扩展类型指定 errors="ignore" 无效的错误 (GH 54654)

  • 使用 Series.convert_dtypes() 时,未能将所有 NA 列转换为 null[pyarrow] 的错误 (GH 55346)

  • 使用完整列赋值(例如 df.loc[:, 'a'] = incompatible_value)将具有不同 dtype 的 Series 赋值时,:meth:DataFrame.loc 未抛出“不兼容 dtype 警告”(参见 PDEP6)的错误 (GH 39584)

字符串#

区间#

索引#

缺失值#

MultiIndex#

I/O#

周期#

  • 构建 PeriodIndex 时,当传递了 dataordinal**fields 中的多个参数,却未能引发 ValueError 的错误 (GH 55961)

  • 使用 Period 进行加法运算时,悄无声息地发生环绕而非引发 OverflowError 的错误 (GH 55503)

  • 使用 astypePeriodDtype 转换为非纳秒单位的 datetime64DatetimeTZDtype 时,错误地返回纳秒单位的错误 (GH 55958)

绘图#

分组/重采样/滚动计算#

重塑#

稀疏#

  • arrays.SparseArray.take() 中的 bug,使用与数组填充值不同的填充值时 (GH 55181)

其他#

贡献者#

本次发布共有 162 人贡献了补丁。名字旁带有“+”的人员是首次贡献补丁。

  • AG

  • Aaron Rahman +

  • Abdullah Ihsan Secer +

  • Abhijit Deo +

  • Adrian D’Alessandro

  • Ahmad Mustafa Anis +

  • Amanda Bizzinotto

  • Amith KK +

  • Aniket Patil +

  • Antonio Fonseca +

  • Artur Barseghyan

  • Ben Greiner

  • Bill Blum +

  • Boyd Kane

  • Damian Kula

  • Dan King +

  • Daniel Weindl +

  • 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 +

  • Gadea Autric +

  • Guillaume Lemaitre

  • Hadi Abdi Khojasteh

  • Hedeer El Showk +

  • Huanghz2001 +

  • Isaac Virshup

  • Issam +

  • Itay Azolay +

  • Itayazolay +

  • Jaca +

  • Jack McIvor +

  • JackCollins91 +

  • James Spencer +

  • Jay

  • Jessica Greene

  • Jirka Borovec +

  • JohannaTrost +

  • John C +

  • Joris Van den Bossche

  • José Lucas Mayer +

  • José Lucas Silva Mayer +

  • João Andrade +

  • Kai Mühlbauer

  • Katharina Tielking, MD +

  • Kazuto Haruguchi +

  • Kevin

  • Lawrence Mitchell

  • Linus +

  • Linus Sommer +

  • Louis-Émile Robitaille +

  • Luke Manley

  • Lumberbot (aka Jack)

  • Maggie Liu +

  • MainHanzo +

  • Marc Garcia

  • Marco Edward Gorelli

  • MarcoGorelli

  • Martin Šícho +

  • Mateusz Sokół

  • Matheus Felipe +

  • Matthew Roeschke

  • Matthias Bussonnier

  • Maxwell Bileschi +

  • Michael Tiemann

  • Michał Górny

  • Molly Bowers +

  • Moritz Schubert +

  • NNLNR +

  • Natalia Mokeeva

  • Nils Müller-Wendt +

  • Omar Elbaz

  • Pandas Development Team

  • Paras Gupta +

  • Parthi

  • Patrick Hoefler

  • Paul Pellissier +

  • Paul Uhlenbruck +

  • Philip Meier

  • 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 +

  • Sebastian Berg

  • Sergey Zakharov +

  • Shyamala Venkatakrishnan +

  • StEmGeo +

  • Stefanie Molin

  • Stijn de Gooijer +

  • Thiago Gariani +

  • Thomas A Caswell

  • Thomas Baumann +

  • Thomas Guillet +

  • Thomas Lazarus +

  • 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 +

  • cobalt

  • 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 +