2.1.0 中的新增功能(2023 年 8 月 30 日)#

这些是 pandas 2.1.0 中的变化。请参阅发行说明以获取完整的变更日志,包括其他版本的 pandas。

增强功能#

PyArrow 将成为 pandas 3.0 的必需依赖项#

从 pandas 3.0 开始, PyArrow将成为 pandas 的必需依赖项。该决定是根据 PDEP 10做出的。

这将带来更多对 pandas 用户非常有利的改变,包括但不限于:

  • 默认情况下将字符串推断为 PyArrow 支持的字符串,从而显着减少内存占用并大幅提高性能。

  • 默认情况下使用 PyArrow 推断更复杂的数据类型,例如Decimallistsbytes等。structured data

  • 与依赖 Apache Arrow 的其他库具有更好的互操作性。

我们正在此处收集有关此决定的反馈。

默认情况下避免对字符串使用 NumPy 对象数据类型#

以前,默认情况下所有字符串都存储在具有 NumPy 对象数据类型的列中。此版本引入了一个选项future.infer_string,可以将所有字符串推断为 PyArrow 支持的带有 dtype 的字符串"string[pyarrow_numpy]"。这是一个新的字符串数据类型实现,在比较操作中遵循 NumPy 语义,并将np.nan作为缺失值指示符返回。设置该选项还将推断 dtype"string"StringDtype存储设置为 的数据类型"pyarrow_numpy",忽略该选项后面的值 mode.string_storage

仅当安装了 PyArrow 时此选项才有效。与 NumPy 对象 ( GH 54430 ) 相比,PyArrow 支持的字符串显着减少了内存占用,并提供了很大的性能改进。

可以通过以下方式启用该选项:

pd.options.future.infer_string = True

此行为将成为 pandas 3.0 的默认行为。

DataFrame 缩减保留了扩展 dtypes #

在 pandas 的早期版本中,DataFrame 缩减(等)的结果具有 NumPy dtypes,即使 DataFrame 具有扩展 dtypes 也是如此。 Pandas 现在可以在使用通用 dtype ( GH 52788 )对 DataFrame 列进行缩减时保留 dtype 。DataFrame.sum() DataFrame.mean()

旧行为

In [1]: df = pd.DataFrame({"a": [1, 1, 2, 1], "b": [np.nan, 2.0, 3.0, 4.0]}, dtype="Int64")
In [2]: df.sum()
Out[2]:
a    5
b    9
dtype: int64
In [3]: df = df.astype("int64[pyarrow]")
In [4]: df.sum()
Out[4]:
a    5
b    9
dtype: int64

新行为

In [1]: df = pd.DataFrame({"a": [1, 1, 2, 1], "b": [np.nan, 2.0, 3.0, 4.0]}, dtype="Int64")

In [2]: df.sum()
Out[2]: 
a    5
b    9
dtype: Int64

In [3]: df = df.astype("int64[pyarrow]")

In [4]: df.sum()
Out[4]: 
a    5
b    9
dtype: int64[pyarrow]

请注意,dtype 现在分别是 masked dtype 和 PyArrow dtype,而之前它是 NumPy 整数 dtype。

为了允许 DataFrame 缩减以保留扩展 dtypes,ExtensionArray._reduce()已经获得了一个新的关键字参数keepdims。调用ExtensionArray._reduce()withkeepdims=True应返回沿缩减轴长度为 1 的数组。为了保持向后兼容性,该参数不是必需的,但将来会成为必需的。如果在签名中找不到该参数,则 DataFrame 缩减无法保留扩展 dtypes。此外,如果未找到参数,FutureWarning将发出 a 并且像 mypy 这样的类型检查器可能会抱怨签名与ExtensionArray._reduce().

写入时复制改进#

  • Series.transform()func就地修改时不尊重写入时复制SeriesGH 53747

  • 调用Index.values()现在将返回只读 NumPy 数组 ( GH 53704 )

  • 将 a 设置Series为 aDataFrame现在会创建惰性复制而不是深层复制(GH 53142

  • DataFrame当从 Index 对象的字典构造 DataFrame 并指定 时,构造函数现在copy=False将使用这些 Index 对象的惰性副本作为 DataFrame 的列 ( GH 52947 )

  • Series 或 DataFrame ( df.copy(deep=False)) 的浅拷贝现在还将返回行/列Index对象的浅拷贝,而不仅仅是数据的浅拷贝,即结果的索引不再相同(不再为 True)(GH 53721df.copy(deep=False).index is df.index

  • DataFrame.head()现在DataFrame.tail()将返回深层副本(GH 54011

  • 添加惰性复制机制DataFrame.eval()GH 53746

  • 现在,当启用写入时复制时,尝试对临时列选择(例如 )进行就地操作将始终发出警告。在这种模式下,像这样的就地操作永远不会起作用,因为选择的行为就像临时副本一样。这适用于:df["a"].fillna(100, inplace=True)

    • DataFrame.update / Series.update

    • DataFrame.fillna / Series.fillna

    • DataFrame.replace / Series.replace

    • 数据帧.clip / 系列.clip

    • DataFrame.where / Series.where

    • DataFrame.mask / Series.mask

    • DataFrame.interpolate / Series.interpolate

    • DataFrame.ffill / Series.ffill

    • DataFrame.bfill / Series.bfill

DataFrame.map()方法和对 ExtensionArrays 的支持#

DataFrame.map()添加并DataFrame.applymap()已弃用。DataFrame.map()具有与 相同的功能DataFrame.applymap(),但新名称更好地传达了这是( GH 52353DataFrame )的版本。Series.map()

当给定一个可调用对象时,Series.map()将该可调用对象应用于 的所有元素Series。类似地,DataFrame.map()将可调用应用到 的所有元素DataFrame,同时Index.map()将可调用应用到 的所有元素Index

通常,不希望将可调用对象应用于数组的类似 nan 的值,并且为了避免这样做,map可以使用na_action="ignore",即 来调用该方法。然而,对于许多类型并没有实现,并且对于除可空数字类型(即具有 dtype等)之外的任何子类都不能正常工作。ser.map(func, na_action="ignore")na_action="ignore"ExtensionArrayIndexna_action="ignore"ExtensionArrayInt64

na_action="ignore"现在适用于所有数组类型(GH 52219GH 51645GH 51809GH 51936GH 52033GH 52096)。

以前的行为

In [1]: ser = pd.Series(["a", "b", np.nan], dtype="category")
In [2]: ser.map(str.upper, na_action="ignore")
NotImplementedError
In [3]: df = pd.DataFrame(ser)
In [4]: df.applymap(str.upper, na_action="ignore")  # worked for DataFrame
     0
0    A
1    B
2  NaN
In [5]: idx = pd.Index(ser)
In [6]: idx.map(str.upper, na_action="ignore")
TypeError: CategoricalIndex.map() got an unexpected keyword argument 'na_action'

新行为

In [5]: ser = pd.Series(["a", "b", np.nan], dtype="category")

In [6]: ser.map(str.upper, na_action="ignore")
Out[6]: 
0      A
1      B
2    NaN
dtype: category
Categories (2, object): ['A', 'B']

In [7]: df = pd.DataFrame(ser)

In [8]: df.map(str.upper, na_action="ignore")
Out[8]: 
     0
0    A
1    B
2  NaN

In [9]: idx = pd.Index(ser)

In [10]: idx.map(str.upper, na_action="ignore")
Out[10]: CategoricalIndex(['A', 'B', nan], categories=['A', 'B'], ordered=False, dtype='category')

另请注意,Categorical.map()默认情况下已将其na_action设置为"ignore"隐式。这已被弃用,默认值Categorical.map()将更改为na_action=None,与所有其他数组类型一致。

新实施#DataFrame.stack()

pandas 重新实现了DataFrame.stack().要使用新的实现,请传递参数future_stack=True。这将成为pandas 3.0中唯一的选择。

之前的实现有两个主要的行为缺点。

  1. 以前的实现会不必要地将 NA 值引入结果中。用户可以通过传递dropna=True(默认)自动删除 NA 值,但这样做也可能从输入中存在的结果中删除 NA 值。请参阅下面的示例。

  2. 以前的实现sort=True(默认)有时会对结果索引的一部分进行排序,有时则不会。如果输入的列不是aMultiIndex则结果索引将永远不会被排序。如果列是 a MultiIndex,则在大多数情况下,将对来自堆叠列级别的结果索引中的级别进行排序。在极少数情况下,此类级别将以非标准顺序排序,具体取决于列的创建方式。

新的实现 ( future_stack=True) 在堆叠多个级别时将不再不必要地引入 NA 值,并且永远不会排序。因此,参数dropnasort未被使用,并且在使用时必须保持未指定状态future_stack=True。这些参数将在下一个主要版本中删除。

In [11]: columns = pd.MultiIndex.from_tuples([("B", "d"), ("A", "c")])

In [12]: df = pd.DataFrame([[0, 2], [1, 3]], index=["z", "y"], columns=columns)

In [13]: df
Out[13]: 
   B  A
   d  c
z  0  2
y  1  3

在以前的版本 ( future_stack=False) 中,默认值将删除不必要的引入 NA 值,但仍会在此过程中dropna=True强制 dtype 。float64在新版本中,没有引入 NA,因此没有数据类型的强制。

In [14]: df.stack([0, 1], future_stack=False, dropna=True)
Out[14]: 
z  A  c    2.0
   B  d    0.0
y  A  c    3.0
   B  d    1.0
dtype: float64

In [15]: df.stack([0, 1], future_stack=True)
Out[15]: 
z  B  d    0
   A  c    2
y  B  d    1
   A  c    3
dtype: int64

如果输入包含 NA 值,则先前版本也会使用 删除这些值dropna=True或引入新的 NA 值dropna=False。新版本保留输入中的所有值。

In [16]: df = pd.DataFrame([[0, 2], [np.nan, np.nan]], columns=columns)

In [17]: df
Out[17]: 
     B    A
     d    c
0  0.0  2.0
1  NaN  NaN

In [18]: df.stack([0, 1], future_stack=False, dropna=True)
Out[18]: 
0  A  c    2.0
   B  d    0.0
dtype: float64

In [19]: df.stack([0, 1], future_stack=False, dropna=False)
Out[19]: 
0  A  d    NaN
      c    2.0
   B  d    0.0
      c    NaN
1  A  d    NaN
      c    NaN
   B  d    NaN
      c    NaN
dtype: float64

In [20]: df.stack([0, 1], future_stack=True)
Out[20]: 
0  B  d    0.0
   A  c    2.0
1  B  d    NaN
   A  c    NaN
dtype: float64

其他增强功能#

向后不兼容的 API 更改#

增加了 Python 的最低版本#

pandas 2.1.0 支持 Python 3.9 及更高版本。

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

更新了一些依赖项的最低支持版本。如果安装了,我们现在需要:

包裹

最低版本

必需的

改变了

麻木

1.22.4

X

X

mypy(开发)

1.4.1

X

美丽汤4

4.11.1

X

瓶颈

1.3.4

X

数据帧 API 兼容

0.1.7

X

快速镶木地板

0.8.1

X

FS规范

2022.05.0

X

假设

6.46.1

X

GCSFS

2022.05.0

X

金贾2

3.1.2

X

lxml

4.8.0

X

努巴

0.55.2

X

数值表达式

2.8.0

X

开放式pyxl

3.0.10

X

pandas-GBQ

0.17.5

X

心理咨询师2

2.9.3

X

pyreadstat

1.1.5

X

pyqt5

5.15.6

X

pytables

3.7.0

X

py测试

7.3.2

X

python-snappy

0.6.1

X

pyxlsb

1.0.9

X

s3fs

2022.05.0

X

scipy

1.8.1

X

sqlalchemy

1.4.36

X

制表

0.8.10

X

阵列

2022.03.0

X

XLSX作家

3.0.3

X

标准

0.17.0

X

对于可选库,一般建议使用最新版本。

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

其他 API 更改#

  • arrays.PandasArray已重命名NumpyExtensionArray,附加的数据类型名称从 更改PandasDtypeNumpyEADtype;导入PandasArray仍然有效,直到下一个主要版本(GH 53694

弃用#

已弃用类似 setitem 的 Series 操作中的静默向上转换#

PDEP-6:https://pandas.pydata.org/pdeps/0006-ban-upcasting.html

Series(或 DataFrame 列)上类似 Setitem 的操作会默默地向上转换 dtype,因此已被弃用并显示警告。受影响的操作示例包括:

  • ser.fillna('foo', inplace=True)

  • ser.where(ser.isna(), 'foo', inplace=True)

  • ser.iloc[indexer] = 'foo'

  • ser.loc[indexer] = 'foo'

  • df.iloc[indexer, 0] = 'foo'

  • df.loc[indexer, 'a'] = 'foo'

  • ser[indexer] = 'foo'

其中ser是 a Seriesdf是 a DataFrame,并且indexer 可以是切片、掩码、单个值、值列表或数组,或者任何其他允许的索引器。

在未来的版本中,这些将引发错误,您应该首先转换为通用数据类型。

以前的行为

In [1]: ser = pd.Series([1, 2, 3])

In [2]: ser
Out[2]:
0    1
1    2
2    3
dtype: int64

In [3]: ser[0] = 'not an int64'

In [4]: ser
Out[4]:
0    not an int64
1               2
2               3
dtype: object

新行为

In [1]: ser = pd.Series([1, 2, 3])

In [2]: ser
Out[2]:
0    1
1    2
2    3
dtype: int64

In [3]: ser[0] = 'not an int64'
FutureWarning:
  Setting an item of incompatible dtype is deprecated and will raise an error in a future version of pandas.
  Value 'not an int64' has dtype incompatible with int64, please explicitly cast to a compatible dtype first.

In [4]: ser
Out[4]:
0    not an int64
1               2
2               3
dtype: object

要保留当前行为,在上面的情况下,您可以首先转换ser为dtype:object

In [21]: ser = pd.Series([1, 2, 3])

In [22]: ser = ser.astype('object')

In [23]: ser[0] = 'not an int64'

In [24]: ser
Out[24]: 
0    not an int64
1               2
2               3
dtype: object

根据用例,转换为不同的数据类型可能更合适。例如,在下面,我们转换为float64

In [25]: ser = pd.Series([1, 2, 3])

In [26]: ser = ser.astype('float64')

In [27]: ser[0] = 1.1

In [28]: ser
Out[28]: 
0    1.1
1    2.0
2    3.0
dtype: float64

如需进一步阅读,请参阅https://pandas.pydata.org/pdeps/0006-ban-upcasting.html

已弃用解析具有混合时区的日期时间#

不推荐使用混合时区解析日期时间并显示警告,除非用户传递utc=Trueto_datetime()GH 50887

以前的行为

In [7]: data = ["2020-01-01 00:00:00+06:00", "2020-01-01 00:00:00+01:00"]

In [8]:  pd.to_datetime(data, utc=False)
Out[8]:
Index([2020-01-01 00:00:00+06:00, 2020-01-01 00:00:00+01:00], dtype='object')

新行为

In [9]: pd.to_datetime(data, utc=False)
FutureWarning:
  In a future version of pandas, parsing datetimes with mixed time zones will raise
  a warning unless `utc=True`. Please specify `utc=True` to opt in to the new behaviour
  and silence this warning. To create a `Series` with mixed offsets and `object` dtype,
  please use `apply` and `datetime.datetime.strptime`.
Index([2020-01-01 00:00:00+06:00, 2020-01-01 00:00:00+01:00], dtype='object')

为了消除此警告并避免在 pandas 的未来版本中出现错误,请指定utc=True

In [29]: data = ["2020-01-01 00:00:00+06:00", "2020-01-01 00:00:00+01:00"]

In [30]: pd.to_datetime(data, utc=True)
Out[30]: DatetimeIndex(['2019-12-31 18:00:00+00:00', '2019-12-31 23:00:00+00:00'], dtype='datetime64[ns, UTC]', freq=None)

要创建Series混合偏移量和object数据类型,请使用applydatetime.datetime.strptime

In [31]: import datetime as dt

In [32]: data = ["2020-01-01 00:00:00+06:00", "2020-01-01 00:00:00+01:00"]

In [33]: pd.Series(data).apply(lambda x: dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S%z'))
Out[33]: 
0    2020-01-01 00:00:00+06:00
1    2020-01-01 00:00:00+01:00
dtype: object

其他弃用#

性能改进#

Bug修复

分类#

类似日期时间#

  • DatetimeIndex.map()现在na_action="ignore"按预期工作(GH 51644

  • DatetimeIndex.slice_indexer()KeyError现在,如果任一切片边界不在索引中,则引发非单调索引;此行为之前已被弃用,但处理方式不一致(GH 53983

  • 将对象乘以常量DateOffset时行为不一致的错误( GH 47953 )DateOffset

  • 与( GH 46877 )一起date_range()时出现错误freqDateOffsetnanoseconds

  • 将PyArrow 时间戳to_datetime()转换SeriesDataFrame包含为 numpy 日期时间时出现错误( GH 52545 )arrays.ArrowExtensionArray

  • DatetimeArray.map()和中的错误DatetimeIndex.map(),其中提供的可调用按数组操作而不是按元素操作(GH 51977

  • 针对 PyArrow 支持的日期(如 dtypes )DataFrame.to_sql()提出错误( GH 53854ValueError

  • Timestamp.date()Timestamp.isocalendar()Timestamp.timetuple()和中的错误Timestamp.toordinal()对于 Python 标准库的日期时间模块支持之外的输入返回不正确的结果 ( GH 53668 )

  • 接近Timestamp.round()实现边界的值会返回错误结果而不是引发错误OutOfBoundsDatetimeGH 51494

  • 从 datetime 或 timedelta 标量构造 aSeries或 的错误DataFrame总是推断纳秒分辨率而不是从输入推断(GH 52212

  • Timestamp从表示时间但没有日期的字符串构造 a 时出现错误,推断出错误的单位 ( GH 54097 )

  • 构建Timestamp带有ts_input=pd.NA提升的错误TypeErrorGH 45481

  • 解析带有工作日但没有日期的日期时间字符串时出现错误,例如“2023 Sept Thu”错误地引发AttributeError而不是ValueErrorGH 52659

  • Series当 dtype 是具有非纳秒分辨率提升的时区感知日期时间时,repr 中的错误OutOfBoundsDatetimeGH 54623

时间增量#

  • TimedeltaIndex除法或乘法错误.freq导致“0 天”而不是None( GH 51575 )

  • TimedeltaNumPytimedelta64对象未正确引发的错误ValueErrorGH 52806

  • to_timedelta()转换SeriesDataFrame包含ArrowDtypepyarrow.durationNumPy 时出现错误timedelta64GH 54298

  • 错误Timedelta.__hash__(),提高了OutOfBoundsTimedelta第二分辨率的某些大值(GH 54037

  • 接近Timedelta.round()实现边界的值会返回错误结果而不是引发错误OutOfBoundsTimedeltaGH 51494

  • 错误(GHTimedeltaIndex.map() 51644 )na_action="ignore"

  • arrays.TimedeltaArray.map()和中的错误TimedeltaIndex.map(),其中提供的可调用按数组操作而不是按元素操作(GH 51977

时区

  • infer_freq()引发时区感知时间戳的TypeError错误(GH 52456Series

  • 错误DatetimeTZDtype.base()总是返回纳秒分辨率的 NumPy dtype ( GH 52705 )

数字#

转换

字符串#

间隔

索引#

丢失的

多重索引#

输入/输出#

时期

  • 当没有传递参数或传递参数时,构造函数中的错误PeriodDtype无法引发( GH 27388TypeErrorNone

  • 构造函数中的错误错误地为不同的输入PeriodDtype返回相同的值(GH 24121normalizeDateOffset freq

  • PeriodDtype构造函数中的错误ValueError而不是TypeError传递无效类型时的错误(GH 51790

  • PeriodDtype删除时对象可以保持活动状态的错误( GH 54184

  • read_csv()不将空字符串处理为空值的错误engine="pyarrow"GH 52087

  • read_csv()返回objectdtype 列而不是返回float64dtypeengine="pyarrow"列时出现错误engine="pyarrow"GH 52087

  • Period.now()不接受freq参数作为关键字参数的错误( GH 53369

  • 错误(GHPeriodIndex.map() 51644 )na_action="ignore"

  • arrays.PeriodArray.map()和中的错误PeriodIndex.map(),其中提供的可调用按数组操作而不是按元素操作(GH 51977

  • 错误地允许构建 freqPeriodPeriodDtype使用CustomBusinessDayfreq 的错误;使用BusinessDayGH 52534

绘图#

分组/重新采样/滚动#

重塑#

稀疏#

  • 当给定其子类型不兼容时,构造函数中的错误SparseDtype无法引发,该子类型必须是 NumPy dtype ( GH 53160 )TypeErrordtype

  • 错误arrays.SparseArray.map()允许填充值包含在稀疏值中(GH 52095

扩展数组#

  • ArrowStringArray构造函数中的错误会ValueError因字符串的字典类型而引发(GH 54074

  • 在 dict 中给出时,构造函数中的错误DataFrame不使用扩展名 dtype 进行复制( GH 53744Series

  • ArrowExtensionArray将 pandas 非纳秒时间对象从非零值转换为零值时出现错误( GH 53171 )

  • Series.quantile()PyArrow 时间类型提升的错误ArrowInvalidGH 52678

  • 使用dtype ( GH 52471 )Series.rank()返回小值的错误顺序的错误Float64

  • Series.unique()布尔值ArrowDtype的错误NAGH 54667

  • 错误__iter__()__getitem__()返回非纳米数据类型的 python datetime 和 timedelta 对象 ( GH 53326 )

  • 为具有多个块的类型factorize()返回不正确的唯一值时出现错误( GH 54844 )pyarrow.dictionarypyarrow.chunked_array

  • ExtensionArray将子类传递给关键字时出现错误dtype。现在,这将引发 aUserWarning来鼓励通过实例(GH 31356GH 54592

  • 当列有一个带有 aDataFrame时 repr 无法工作的错误( GH 54063 )ArrowDtypepyarrow.ExtensionDtype

  • __from_arrow__屏蔽 ExtensionDtypes 的方法(例如Float64DtypeBooleanDtype)不接受 PyArrow 类型数组pyarrow.null()GH 52223)的错误

造型器#

  • 在( GH 52728 )Styler._copy()的子类中调用重写方法时出现错误Styler

元数据#

其他

贡献者#

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

  • AG+

  • 阿尔尼·科斯凯拉

  • 阿德里安·达历山德罗 +

  • 阿德里安·鲁奥特 +

  • 艾哈迈德+

  • 艾多斯·卡纳皮亚诺夫 +

  • 亚历克斯·马林斯

  • 亚历山大·塞勒 +

  • 阿里·阿斯加尔 +

  • 关佳丽

  • 阿曼达·比齐诺托 +

  • 安德烈斯·阿尔加巴 +

  • 安吉拉·徐 +

  • 阿尼鲁德·赫格德 +

  • 安东尼·埃夫莫福普洛斯 +

  • 安努什卡·比什诺伊

  • 阿诺·查诺万 +

  • 阿尔乔姆·沃罗比耶夫 +

  • 艾莉亚·萨卡 +

  • 阿什温·斯里纳斯

  • 欧阳奥斯汀 +

  • 奥斯汀·伯内特 +

  • 熊+

  • 本·曼戈尔德 +

  • 贝尔纳多·加梅罗 +

  • 博伊德·凯恩 +

  • 布雷扬·亚历山大·穆尼奥斯 B +

  • 布罗克

  • 切坦0402 +

  • 克里斯·卡里尼

  • 克里斯托夫·考夫曼

  • 克拉克-W+

  • 康拉德·麦基股票

  • 科里·巴特尔海默 +

  • 库尔顿·图尔 +

  • D067751 +

  • 丹尼尔·艾萨克

  • 丹尼尔·尼科洛迪 +

  • 大卫·塞缪尔 +

  • 大卫·塞弗特 +

  • 迪·莱昂 +

  • 德亚·玛丽亚·莱昂

  • 迪普亚曼·达塔

  • 丹尼斯·萨波日尼科夫 +

  • 阿库提陀罗尼 +

  • 迪米·格拉玛提卡基斯 +

  • 德克·乌布利希 +

  • 德米特里·谢梅托夫 +

  • 多米尼克·伯杰

  • 艾夫坎·S·格克泰佩 +

  • 埃格·厄兹古罗格鲁

  • 伊莱·施瓦茨

  • 二弟+

  • 法布里齐奥·普里梅拉诺 +

  • 法昆多·巴蒂斯塔 +

  • 李芳辰

  • 费利佩·马翁 +

  • 弗朗西斯+

  • 未来程序员+

  • 加布里埃尔·卡贝 +

  • 盖坦·拉梅特 +

  • 吉安卢卡·菲卡雷利

  • 戈德威尔·阿格贝霍努 +

  • 纪尧姆·勒梅特

  • 郭慈

  • 古斯塔沃·巴尔加斯 +

  • 哈米德雷扎·萨纳伊 +

  • 快乐马 +

  • 哈拉尔德·胡苏姆 +

  • 乌戈·范·凯梅纳德

  • 伊多·罗南 +

  • 欧夫·勒斯蒂格

  • JHM 达比郡

  • JHM 达比郡 (iMac)

  • 杰杰+

  • 贾罗德·米尔曼

  • 周杰伦+

  • 杰夫·雷巴克

  • 杰西卡·格林 +

  • 张嘉伟 +

  • 肖金丽 +

  • 葛乔+

  • 乔纳·萨森哈根 +

  • 乔纳斯·哈格

  • 乔里斯·范登博什

  • 约书亚·肖 +

  • 朱利安·巴迪罗

  • 朱利安·奥尔蒂斯 +

  • 朱利安·帕拉德 +

  • 贾斯汀·泰森 +

  • 贾斯图斯·马金

  • 卡比尔·克里希纳 +

  • 康素敏

  • 克图·帕特尔 +

  • 凯文+

  • 凯文·安德森

  • 凯文·简·安克

  • 凯文·克莱因 +

  • 凯文·谢泼德

  • 克斯特亚·法伯

  • LM+

  • 拉斯·连恩 (Lars Lien) 脚踝 +

  • 劳伦斯·米切尔

  • 蔡立伟+

  • 卢伊克·迪里多卢

  • 卢西亚娜·索洛扎诺 +

  • 卢克·曼利

  • 伐木工(又名杰克)

  • 马拉特·科皮尤克 +

  • 马克·加西亚

  • 马可·爱德华·戈雷利

  • 马可·戈雷利

  • 玛丽亚·特伦茨克 +

  • 马文·格拉弗特 +

  • 马特乌什·索科乌 +

  • 马特·理查兹

  • 马修·巴伯 +

  • 马修·罗斯克

  • 马图斯·瓦洛 +

  • 米娅·雷默 +

  • 迈克尔·特里 +

  • 迈克尔·蒂曼 +

  • 米拉德·马尼·朱 +

  • 迈尔斯·克兰默 +

  • 米里贾H +

  • 美游+

  • 娜塔莉亚·莫基耶娃

  • 内森·戈德鲍姆 +

  • 尼克劳斯·罗奇 +

  • 尼古拉斯·卡梅尼施 +

  • 尼古拉·博耶夫 +

  • 尼拉夫

  • 尼舒·乔杜里

  • 诺亚·塔米尔

  • 诺伊·哈南 +

  • 努曼+

  • 努曼·伊贾兹 +

  • 奥马尔·艾尔巴兹 +

  • 熊猫开发团队

  • 冻糕加萨娜

  • 帕蒂

  • 帕特里克·赫夫勒

  • 帕特里克·施莱特 +

  • 帕维尔·克兰兹伯格 +

  • 菲利普

  • 菲利普·迈耶 +

  • 普拉纳夫·赛布尚·拉武里

  • 巴吞P+

  • 拉胡尔·西洛尼亚 +

  • 拉贾斯维·维纳亚克 +

  • 拉贾·苏布拉·慕克吉 +

  • 拉尔夫·戈默斯

  • 拉夫·斯库

  • 陈丽贝卡+

  • 雷纳托·科特里姆·马西尔 +

  • 礼萨(米拉德)马尼茹 +

  • 理查德·沙德拉赫

  • 里尼克·雷迪 +

  • 罗伯特·卢斯+

  • 罗纳尔多+

  • 魏瑞利 +

  • 苏米亚迪普·马尔 +

  • 桑吉斯·乔坎 +

  • 赛义德·凯泽·阿里 +

  • 斯科特竖琴 +

  • 硒+

  • 沙什瓦·阿格拉瓦尔

  • 西马尔·巴西 +

  • 西蒙·布鲁格曼 +

  • 西蒙·霍金斯

  • 西蒙·霍克斯布罗·汉森

  • 斯诺夫杨+

  • 排序法穆德基普 +

  • 斯特凡·克劳奇克

  • 斯蒂芬妮·莫林

  • 孙燕姿

  • 斯泰利奥斯·佩特拉基斯 +

  • 斯蒂恩·范霍伊

  • 斯文

  • 西尔万·玛丽

  • 西尔万·玛丽

  • 特尔吉·彼得森

  • 蒂埃里·莫伊桑

  • 托马斯

  • 托马斯·卡斯威尔

  • 托马斯·格兰杰

  • 托马斯·李

  • 托马斯·弗兰肯 +

  • 宋天野 +

  • 蒂姆·霍夫曼

  • 蒂姆·洛德霍斯 +

  • 蒂姆·斯瓦斯特

  • 泰门·尤尔希奇 +

  • 托尔克-KU +

  • 托马斯·帕夫利克 +

  • 托里+

  • 托斯顿·沃特温

  • 特拉维斯·吉布斯 +

  • 翁贝托·法西 +

  • 瓦莱里+

  • 凡迈胡 +

  • 维克多·莫莫杜 +

  • 维杰·维迪亚纳坦 +

  • 沃姆V+

  • 威廉·安德烈

  • 威廉·艾德

  • 沃尔夫·贝伦霍夫 +

  • 肖媛

  • 姚晓

  • 亚辛塔塔尔

  • 李亚欣 +

  • 易伟+

  • 尤利娅+

  • 尤沙斯·辛格 +

  • 扎克·布雷格 +

  • 王正波

  • 上面1 +

  • 艾哈迈德2901 +

  • 阿萨法姆+

  • 奥德森

  • 八月-滕兰+

  • 布纳德生 +

  • 厘米克+

  • cnguyen-03 +

  • 可可+

  • 依赖机器人[机器人]

  • 吉普莱斯 +

  • github-actions[机器人]

  • 格迈瓦尔德 +

  • 格莫拉德+

  • 杰布罗克门德尔

  • 凯瑟琳杭

  • kevx82 +

  • 利亚2710 +

  • 梁3zy22 +

  • 尔塔太郎 +

  • 卢索洛兹 +

  • m-ganko +

  • 姆克莱普施+

  • 马特肯尼 +

  • 姆拉斯特古 +

  • 纳布多尼+

  • 奥马尔·埃尔巴兹 +

  • 保罗里斯+

  • 阴茎勃起症 +

  • 波塔普75 +

  • 预提交-ci[bot] +

  • 拉纳森+

  • 拉吉塔帕 +

  • 拉姆维克拉姆斯 +

  • 丽贝卡·帕尔默

  • 红迪尔格1 +

  • rmhowe425 +

  • 世嘉贸易+

  • 什特肯+

  • 瑞士+

  • 泰泽豪

  • tnt马修斯+

  • tpaxman +

  • 泽豪 +

  • V-麦库蒂尼奥 +

  • 冈扎尔 +

  • 约纳舒布

  • 尤斯哈斯+

  • 阿达姆·利帕伊

  • 什捷潘·穆勒 +