2.2.0 中的新增功能(2024 年 1 月 19 日)#

这些是 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"

此模式将在许多与大多数查询实际上不相关的不同场景中发出警告。我们建议探索这种模式,但没有必要消除所有这些警告。迁移指南 更详细地解释了升级过程。

默认情况下专用字符串数据类型(由箭头支持)#

从历史上看,pandas 用 NumPy 对象数据类型表示字符串列。这种表示有很多问题,包括性能低下和内存占用大。这将在 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 对象相同,包括缺失值语义和对这些列的常规操作。

此更改包括 API 中的一些其他更改:

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

  • 列名和索引也将由箭头字符串支持。

  • PyArrow 将成为 pandas 3.0 的必需依赖项,以适应这一变化。

可以通过以下方式启用此未来的数据类型推断逻辑:

pd.options.future.infer_string = True

增强功能#

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

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

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/熊猫

postgres

sqlite

整型16/整型16

整型16

小智

整数

int32/Int32

整型32

整数

整数

int64/Int64

整型64

BIGINT

整数

浮动32

浮动32

真实的

真实的

浮动64

浮动64

双精度

真实的

目的

细绳

文本

文本

布尔值

bool_

布尔值

日期时间64[ns]

时间戳(我们)

时间戳

日期时间64[ns,tz]

时间戳(我们,tz)

时间戳

日期32

日期

月日纳米间隔

间隔

二进制

二进制

BLOB

十进制128

小数[ 1 ]

列表

阵列[ 1 ]

结构体

复合型

[ 1 ]

脚注

如果您有兴趣在 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.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对于 NumPy 可空和箭头类型转换为合适的 NumPy dtype #

to_numpy对于 NumPy 可空和 Arrow 类型现在将转换为合适的 NumPy dtype,而不是object可空和 PyArrow 支持的扩展数据类型的 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

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

  • 具有缺失值的整数数据类型将转换为 NumPy 浮点数据类型并NaN用作缺失值指示符

  • 没有缺失值的 boolean dtypes 被转换为 NumPy bool 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()索引(可能嵌套的)结构字段。

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__()允许对系列中的 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引擎被添加到read_excel().它使用,为 Rust 库calaminepython-calamine提供 Python 绑定。该引擎支持 Excel 文件 ( 、、、) 和 OpenDocument 电子表格 ( ) ( GH 50395 )。.xlsx.xlsm.xls.xlsb.ods

该发动机有两个优点:

  1. Calamine 通常比其他引擎更快,一些基准测试显示结果比“openpyxl”快 5 倍,“odf”快 20 倍,“pyxlsb”快 4 倍,“xlrd”快 1.5 倍。但是,由于行上的惰性迭代,“openpyxl”和“pyxlsb”从大文件中读取几行的速度更快。

  2. Calamine 支持识别.xlsb文件中的日期时间,与 pandas 中唯一可以读取文件的其他引擎“pyxlsb”不同.xlsb

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

有关更多信息,请参阅IO 工具用户指南中的炉甘石(Excel 和 ODS 文件) 。

其他增强功能#

值得注意的错误修复#

这些错误修复可能会带来显着的行为变化。

merge()现在DataFrame.join()始终遵循记录的排序行为#

在 pandas 的早期版本中,merge()并不DataFrame.join()总是返回遵循记录的排序行为的结果。 pandas 现在遵循合并和连接操作中记录的排序行为(GH 54611GH 56426GH 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()and会重新排序索引级别 ( GH 34133 )。DataFrame.join()

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

增加了依赖项的最低版本#

对于可选依赖项,一般建议使用最新版本。低于最低测试版本的可选依赖项可能仍然有效,但不被视为受支持。下表列出了已增加最低测试版本的可选依赖项。

包裹

新的最低版本

美丽汤4

4.11.2

布卢斯克

1.21.3

瓶颈

1.3.6

快速镶木地板

2022.12.0

FS规范

2022.11.0

GCSFS

2022.11.0

lxml

4.9.2

绘图库

3.6.3

努巴

0.56.4

数值表达式

2.8.4

qtpy

2.3.0

开放式pyxl

3.1.0

心理咨询师2

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

制表

0.9.0

阵列

2022.12.0

XLSX作家

3.0.5

标准

0.19.0

pyqt5

5.15.8

兹数据

2022.7

有关更多信息,请参阅依赖项可选依赖项

其他 API 更改#

弃用#

链式分配#

为了准备对 pandas 3.0 中的复制/查看行为进行更大的更改(写入时复制 (CoW)、PDEP-7),我们开始弃用链式分配

当您尝试通过两个后续索引操作更新 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.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

同样的弃用适用于以链式方式完成的就地方法,例如:

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

偏移量

已弃用的别名

新别名

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

已弃用自动向下转型#

已弃用对象数据类型的自动向下转换导致许多方法。这些将以难以预测的方式悄悄地改变数据类型,因为行为是依赖于值的。此外,pandas 正在远离静默的 dtype 更改(GH 54710GH 54261)。

这些方法是:

明确调用DataFrame.infer_objects()以在将来复制当前行为。

result = result.infer_objects(copy=False)

或者使用 显式地将全能浮点数转换为整数astype

设置以下选项以选择未来的行为:

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

其他弃用#

性能改进#

Bug修复

分类#

  • Categorical.isin()提高InvalidIndexError包含重叠Interval值的分类(GH 34974

  • CategoricalDtype.__eq__()返回False混合类型的无序分类数据时出现错误( GH 55468

  • 转换pa.dictionaryCategoricalDtype使用 apa.DictionaryArray作为类别时出现错误 ( GH 56672 )

类似日期时间#

  • DatetimeIndex同时传递 atz和其中之一dayfirstyearfirst忽略 dayfirst/yearfirst时的构造错误( GH 55813 )

  • DatetimeIndex传递 float 对象的 object-dtype ndarray 时出现错误,并且tz错误地本地化结果 ( GH 55780 )

  • Series.isin()dtype 和比较值的错误DatetimeTZDtypeNaT错误地返回全部 -False即使该系列包含NaT条目 ( GH 56427 )

  • 将全 NA DataFrame 与dtype DataFrame连接时concat()引发的错误( GH 52093AttributeErrorDatetimeTZDtype

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

  • 在传递混合字符串和数字类型的列表时错误地引发to_datetime()错误(GH 55780DatetimeIndex

  • 传递具有混合时区或混合时区感知的混合类型对象时出现to_datetime()错误(GH 55693DatetimeIndexValueError

  • 错误是Tick.delta()用非常大的蜱虫引起的OverflowError而不是OutOfBoundsTimedeltaGH 55503

  • DatetimeIndex.shift()非纳秒分辨率的错误错误地以纳秒分辨率返回( GH 56117

  • DatetimeIndex.union()返回具有相同时区但不同单位的 tz 感知索引的对象 dtype 时出现错误( GH 55238 )

  • 当索引中的第一个值是(GH 55755)时出现错误Index.is_monotonic_increasing()Index.is_monotonic_decreasing()始终进行缓存Index.is_unique()TrueNaT

  • 错误地进入Index.view()datetime64 dtype 并错误地引发不受支持的分辨率 ( GH 55710 )

  • Series.dt.round()非纳秒分辨率和NaT条目错误地引发错误OverflowErrorGH 56158

  • Series.fillna()非纳秒分辨率数据类型和更高分辨率向量值的错误返回不正确(内部损坏)的结果(GH 56410

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

  • .astype从较高分辨率的datetime64数据类型转换为较低分辨率的datetime64数据类型(例如)时出现的错误datetime64[us]->datetime64[ms],会悄悄地溢出接近较低实现边界的值(GH 55979

  • 添加或减go非纳秒分辨率的Week偏移量到datetime64 SeriesIndex或列时出现错误,返回不正确的结果 ( GH 55583 )DataFrame

  • 添加或减go具有非纳秒属性的BusinessDay偏移量的错误,或列给出不正确的结果(GH 55608offsetIndexSeriesDataFrame

  • DateOffset将具有微秒分量的对象添加或减go具有非纳秒分辨率的datetime64 IndexSeries或列时出现错误 ( GH 55595 )DataFrame

  • 添加或减go非常大的Tick对象TimestampTimedelta提升对象OverflowError的错误OutOfBoundsTimedeltaGH 55503

  • 创建非纳秒的IndexSeries或时出现错误,并且输入会超出纳秒分辨率的范围,错误地提高(GH 54620DataFrameDatetimeTZDtypeOutOfBoundsDatetime

  • 从混合数字输入创建非纳秒(或)的IndexSeries或 时出现错误,将其视为纳秒而不是 dtype 单位的倍数(这在非混合数字输入中会发生)(GH 56004DataFramedatetime64DatetimeTZDtype

  • 使用非纳秒数据类型和输入创建IndexSeries或 时出现错误,这些输入将超出错误提升的范围(GH 55756DataFramedatetime64datetime64[ns]OutOfBoundsDatetime

  • 使用非 ISO8601 格式解析具有纳秒分辨率的日期时间字符串时出现错误,错误地截断了亚微秒组件 ( GH 56051 )

  • 解析具有亚秒分辨率和尾随零的日期时间字符串时出现错误,错误地推断秒或毫秒分辨率 ( GH 55737 )

  • to_datetime()使用 float-dtype 参数的结果中的错误与( GH 56037 )unit的逐点结果不匹配Timestamp

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

时间增量#

  • Timedelta建筑提升中的错误OverflowError而不是OutOfBoundsTimedeltaGH 55503

  • 使用非纳秒分辨率条目渲染 ( __repr__)TimedeltaIndexSeries使用 timedelta64 值时出现的错误,这些条目都是 24 小时的倍数,无法使用纳秒情况下使用的紧凑表示形式 ( GH 55405 )

时区

  • AbstractHolidayCalendar计算节日庆祝活动时未传播时区数据的错误( GH 54580 )

  • 构造错误Timestamp,值不明确且pytz时区未能引发pytz.AmbiguousTimeErrorGH 55657

  • DST 期间 UTC+0 左右Timestamp.tz_localize()出现错误( GH 51501 )nonexistent="shift_forward

数字#

转换

  • DataFrame.astype()在未腌制的数组上调用时出现错误str- 数组可能会就地更改(GH 54654

  • DataFrame.astype()其中的错误errors="ignore"对扩展类型没有影响(GH 54654

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

  • :meth: 中的错误:使用完整的列设置器分配不同的 dtype 时,DataFrame.loc没有抛出“不兼容的 dtype 警告”(参见PDEP6 )(例如)(GH 39584Seriesdf.loc[:, 'a'] = incompatible_value

字符串#

间隔

索引#

丢失的

多重索引#

输入/输出#

时期

  • PeriodIndex当超过一个dataordinal**fields被通过而未能引发时,构造中的错误ValueErrorGH 55961

  • 另外,错误Period会默默地包裹而不是抬起OverflowErrorGH 55503

  • PeriodDtype使用astypedatetime64DatetimeTZDtype使用非纳秒单位进行铸造时错误地以纳秒单位返回(GH 55958

绘图#

分组/重新采样/滚动#

重塑#

稀疏#

  • arrays.SparseArray.take()使用与数组填充值不同的填充值时出现错误( GH 55181

其他

贡献者#

共有 162 人为此版本贡献了补丁。名字带有“+”的人首次贡献了补丁。

  • 股份公司

  • 亚伦·拉赫曼 +

  • 阿卜杜拉·伊赫桑·塞塞尔 +

  • 阿比吉特·迪奥 +

  • 阿德里安·达历山德罗

  • 艾哈迈德·穆斯塔法·阿尼斯 +

  • 阿曼达·比齐诺托

  • 阿米斯 KK +

  • 安尼凯特·帕蒂尔 +

  • 安东尼奥·丰塞卡 +

  • 阿图尔·巴尔塞吉安

  • 本·格雷纳

  • 比尔·布鲁姆+

  • 博伊德·凯恩

  • 达米安·库拉

  • 丹金+

  • 丹尼尔·温德尔 +

  • 丹尼尔尼科洛迪

  • 大卫·波兹尼克

  • 大卫·托尼安 +

  • 德亚·玛丽亚·莱昂

  • 迪帕克·乔治 +

  • 德米特里+

  • 多米尼克·加米尔 +

  • 唐纳德·塞瓦林加姆 +

  • 道格·戴维斯 +

  • 杜卡斯特里克+

  • 埃拉赫·谢里菲 +

  • 埃里克·韩 +

  • 李芳辰

  • 弗朗西斯科·阿尔法罗 +

  • 加迪亚·奥特里克 +

  • 纪尧姆·勒梅特

  • 哈迪·阿卜迪·霍贾斯特

  • 赫德尔·埃尔·肖克 +

  • 黄赫兹2001+

  • 艾萨克·维尔舒普

  • 伊萨姆+

  • 伊泰·阿佐莱 +

  • 伊塔亚佐莱+

  • 哈卡+

  • 杰克·麦基弗 +

  • 杰克·柯林斯91 +

  • 詹姆斯·斯宾塞 +

  • 杰伊

  • 杰西卡·格林

  • 吉尔卡·博罗维克 +

  • 约翰娜·特罗斯特 +

  • 约翰·C+

  • 乔里斯·范登博什

  • 何塞·卢卡斯·梅尔 +

  • 何塞·卢卡斯·席尔瓦·迈耶 +

  • 若昂·安德拉德 +

  • 凯·米尔鲍尔

  • 凯瑟琳娜·蒂尔金,医学博士 +

  • 春口和人 +

  • 凯文

  • 劳伦斯·米切尔

  • 莱纳斯+

  • 莱纳斯·索默 +

  • 路易斯·埃米尔·罗比塔耶 +

  • 卢克·曼利

  • 伐木工(又名杰克)

  • 刘美琪 +

  • 主要半藏 +

  • 马克·加西亚

  • 马可·爱德华·戈雷利

  • 马可·戈雷利

  • 马丁·西乔 +

  • 马特乌什·索科乌

  • 马修斯·费利佩 +

  • 马修·罗斯克

  • 马蒂亚斯·布索尼耶

  • 麦克斯韦·比莱斯基 +

  • 迈克尔·蒂曼

  • 米哈乌·戈尔尼

  • 莫莉·鲍尔斯 +

  • 莫里茨·舒伯特 +

  • NNLNR +

  • 娜塔莉亚·莫基耶娃

  • 尼尔斯·穆勒-温特 +

  • 奥马尔·埃尔巴兹

  • 熊猫开发团队

  • 帕拉斯·古普塔 +

  • 帕蒂

  • 帕特里克·赫夫勒

  • 保罗·佩利西尔 +

  • 保罗·乌伦布鲁克 +

  • 菲利普·迈尔

  • 菲利普·托米 +

  • 阮光

  • 拉加夫

  • 拉贾·苏布拉·慕克吉

  • 拉尔夫·戈默斯

  • 兰道夫·肖尔茨 +

  • 理查德·沙德拉克

  • 罗布+

  • 罗汉·耆那教 +

  • 瑞安·吉布森 +

  • 赛-苏拉杰-27 +

  • 塞缪尔·奥兰耶利 +

  • 萨拉·博纳蒂 +

  • 塞巴斯蒂安·伯格

  • 谢尔盖·扎哈罗夫 +

  • 沙玛拉·文卡塔克里希南 +

  • 干地理 +

  • 斯蒂芬妮·莫林

  • 斯蒂恩·德·古耶 +

  • 蒂亚戈·加里亚尼 +

  • 托马斯·卡斯威尔

  • 托马斯·鲍曼 +

  • 托马斯·吉耶 +

  • 托马斯·拉扎勒斯 +

  • 托马斯·李

  • 蒂姆·霍夫曼

  • 蒂姆·斯瓦斯特

  • 汤姆·奥格斯普格

  • 托罗+

  • 托斯顿·沃特温

  • 维尔·艾卡斯 +

  • 维尼塔·帕拉斯拉姆普里亚 +

  • 维亚斯·拉马苏布拉马尼 +

  • 威廉·安德烈

  • 威廉·艾德

  • 王威廉 +

  • 肖媛

  • 姚晓

  • 伊夫·戴利

  • 泽穆克斯1613 +

  • 齐亚德·克马迪 +

  • 亚伦-罗布森-8451 +

  • 亚兰肉桂 +

  • 卡尼夫+

  • ccccjone +

  • 克里斯·卡瓦列罗 +

  • 颜色455nm+

  • 丹尼斯雷 +

  • 依赖机器人[机器人]

  • 杰布罗克门德尔

  • 杰法迪亚 +

  • 约翰娜·特罗斯特 +

  • 克穆宗古 +

  • 梅科布尔 +

  • MHB143+

  • 莫罗蒂+

  • mvirts +

  • 奥马尔·埃尔巴兹

  • 保罗里斯

  • 预提交-ci[bot]

  • 拉吉塔帕

  • 丽贝卡·帕尔默

  • rmhowe425

  • 罗汉贾因101

  • 十二三斯+

  • 斯米吉720

  • srkds+

  • 泰泽豪

  • 托雷克斯

  • vbox用户 +

  • 徐子萌+

  • 亚什布+