1.2.0 版本的新功能 (2020 年 12 月 26 日)#

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

警告

用于写入旧式 .xls excel 文件的 xlwt 包已不再维护。现在 xlrd 包仅用于读取旧式 .xls 文件。

之前,read_excel() 的默认参数 engine=None 在许多情况下会导致使用 xlrd 引擎,包括新的 Excel 2007+ (.xlsx) 文件。如果安装了 openpyxl,现在许多此类情况将默认使用 openpyxl 引擎。有关更多详细信息,请参阅 read_excel() 文档。

因此,强烈建议安装 openpyxl 来读取 Excel 2007+ (.xlsx) 文件。请勿在使用 xlrd 读取 .xlsx 文件时报告问题。这已不再受支持,请改用 openpyxl

尝试使用 xlwt 引擎将引发 FutureWarning,除非将选项 io.excel.xls.writer 设置为 "xlwt"。虽然此选项现已弃用并也将引发 FutureWarning,但可以全局设置并抑制警告。建议用户改用 openpyxl 引擎写入 .xlsx 文件。

改进#

可选地禁止重复标签#

现在创建 SeriesDataFrame 时可以使用 allows_duplicate_labels=False 标志来控制索引或列是否包含重复标签(GH 28394)。这可用于防止意外引入重复标签,从而影响下游操作。

默认情况下,仍然允许重复项。

In [1]: pd.Series([1, 2], index=['a', 'a'])
Out[1]:
a    1
a    2
Length: 2, dtype: int64

In [2]: pd.Series([1, 2], index=['a', 'a']).set_flags(allows_duplicate_labels=False)
...
DuplicateLabelError: Index has duplicates.
      positions
label
a        [0, 1]

pandas 将通过许多操作传播 allows_duplicate_labels 属性。

In [3]: a = (
   ...:     pd.Series([1, 2], index=['a', 'b'])
   ...:       .set_flags(allows_duplicate_labels=False)
   ...: )

In [4]: a
Out[4]:
a    1
b    2
Length: 2, dtype: int64

# An operation introducing duplicates
In [5]: a.reindex(['a', 'b', 'a'])
...
DuplicateLabelError: Index has duplicates.
      positions
label
a        [0, 2]

[1 rows x 1 columns]

警告

这是一个实验性功能。目前,许多方法未能传播 allows_duplicate_labels 值。在未来版本中,预计每个接受或返回一个或多个 DataFrame 或 Series 对象的方法都将传播 allows_duplicate_labels

有关更多信息,请参阅 重复标签

allows_duplicate_labels 标志存储在新的 DataFrame.flags 属性中。这存储应用于 pandas 对象的全局属性。这与 DataFrame.attrs 不同,后者存储应用于数据集的信息。

向 fsspec 后端传递参数#

许多读/写函数新增了可选参数 storage_options,用于向存储后端传递参数字典。例如,这允许向 S3 和 GCS 存储传递凭据。哪些参数可以传递给哪些后端的详细信息可在各个存储后端的文档中找到(来自 fsspec 文档的内置实现详细信息以及外部实现链接)。请参阅章节 读/写远程文件

GH 35655 增加了 fsspec 支持(包括 storage_options),用于读取 excel 文件。

to_csv 支持二进制文件句柄#

to_csv() 支持二进制模式下的文件句柄(GH 19827GH 35058),并支持 encodingGH 13068GH 23854)和 compressionGH 22555)。如果 pandas 无法自动检测文件句柄是以二进制模式还是文本模式打开,则需要提供 mode="wb"

例如

In [1]: import io

In [2]: data = pd.DataFrame([0, 1, 2])

In [3]: buffer = io.BytesIO()

In [4]: data.to_csv(buffer, encoding="utf-8", compression="gzip")

to_latex 支持短标题和表格位置#

DataFrame.to_latex() 现在允许指定浮动表格位置(GH 35281)和短标题(GH 36267)。

新增了关键字参数 position 来设置位置。

In [5]: data = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

In [6]: table = data.to_latex(position='ht')

In [7]: print(table)
\begin{table}[ht]
\begin{tabular}{lrr}
\toprule
 & a & b \\
\midrule
0 & 1 & 3 \\
1 & 2 & 4 \\
\bottomrule
\end{tabular}
\end{table}

关键字参数 caption 的用法已扩展。除了接受单个字符串参数外,还可以选择提供一个元组 (full_caption, short_caption) 来添加短标题宏。

In [8]: data = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

In [9]: table = data.to_latex(caption=('the full long caption', 'short caption'))

In [10]: print(table)
\begin{table}
\caption[short caption]{the full long caption}
\begin{tabular}{lrr}
\toprule
 & a & b \\
\midrule
0 & 1 & 3 \\
1 & 2 & 4 \\
\bottomrule
\end{tabular}
\end{table}

read_csvread_table 默认浮点精度更改#

对于 C 解析引擎,read_csv()read_table() 方法之前默认使用一个解析器,该解析器在处理浮点数的最后一个位精度时可能会略有不准确。选项 floating_precision="high" 一直可用以避免此问题。从本版本开始,默认改为使用更精确的解析器,即将 floating_precision=None 对应于高精度解析器,而新增选项 floating_precision="legacy" 用于使用旧版解析器。默认改用更高精度解析器应该不会影响性能。(GH 17154

浮点数据的实验性可空数据类型#

我们添加了 Float32Dtype / Float64DtypeFloatingArray。这些是专用于浮点数据的扩展数据类型,可以持有 pd.NA 缺失值指示符(GH 32265, GH 34307)。

虽然默认的浮点数据类型已经支持使用 np.nan 表示缺失值,但这些新的数据类型使用 pd.NA(及其相应的行为)作为缺失值指示符,与已有的可空整数布尔数据类型一致。

np.nanpd.NA 行为不同的一个例子是比较操作

# the default NumPy float64 dtype
In [11]: s1 = pd.Series([1.5, None])

In [12]: s1
Out[12]: 
0    1.5
1    NaN
Length: 2, dtype: float64

In [13]: s1 > 1
Out[13]: 
0     True
1    False
Length: 2, dtype: bool
# the new nullable float64 dtype
In [14]: s2 = pd.Series([1.5, None], dtype="Float64")

In [15]: s2
Out[15]: 
0     1.5
1    <NA>
Length: 2, dtype: Float64

In [16]: s2 > 1
Out[16]: 
0    True
1    <NA>
Length: 2, dtype: boolean

有关使用 pd.NA 缺失值指示符时的行为详情,请参阅文档中的 NA 语义 部分。

如上所示,可以使用“Float64”或“Float32”字符串(大写以区别于默认的“float64”数据类型)指定 dtype。或者,您也可以使用 dtype 对象

In [17]: pd.Series([1.5, None], dtype=pd.Float32Dtype())
Out[17]: 
0     1.5
1    <NA>
Length: 2, dtype: Float32

现有整数或布尔可空数据类型进行操作,如果结果是浮点类型,现在也将使用可空浮点数据类型(GH 38178)。

警告

实验性:新的浮点数据类型目前处于实验阶段,其行为或 API 可能会在没有警告的情况下发生变化。特别是关于 NaN(与 NA 缺失值不同)的行为可能会有所变动。

聚合时保留索引/列名称#

使用 concat()DataFrame 构造函数进行聚合时,pandas 现在将尽可能尝试保留索引和列名称(GH 35847)。在所有输入共享一个共同名称的情况下,此名称将分配给结果。当输入名称不完全一致时,结果将没有名称。下面是保留索引名称的示例

In [18]: idx = pd.Index(range(5), name='abc')

In [19]: ser = pd.Series(range(5, 10), index=idx)

In [20]: pd.concat({'x': ser[1:], 'y': ser[:-1]}, axis=1)
Out[20]: 
       x    y
abc          
1    6.0  6.0
2    7.0  7.0
3    8.0  8.0
4    9.0  NaN
0    NaN  5.0

[5 rows x 2 columns]

MultiIndex 也是如此,但逻辑是逐级单独应用的。

GroupBy 直接支持 EWM 操作#

DataFrameGroupBy 现在直接支持指数加权窗口操作(GH 16037)。

In [21]: df = pd.DataFrame({'A': ['a', 'b', 'a', 'b'], 'B': range(4)})

In [22]: df
Out[22]: 
   A  B
0  a  0
1  b  1
2  a  2
3  b  3

[4 rows x 2 columns]

In [23]: df.groupby('A').ewm(com=1.0).mean()
Out[23]: 
            B
A            
a 0  0.000000
  2  1.333333
b 1  1.000000
  3  2.333333

[4 rows x 1 columns]

此外,mean 支持通过 Numba 执行,并带有 engineengine_kwargs 参数。必须将 Numba 作为可选依赖项安装才能使用此功能。

其他改进#

值得注意的错误修复#

这些是可能导致显著行为变化的错误修复。

DataFrame 约简的一致性#

DataFrame.any()DataFrame.all() 在使用 bool_only=True 时,现在会逐列决定是否排除对象 dtype 的列,而不是检查 *所有* 对象 dtype 的列是否可以被视为布尔值。

这避免了病态行为,即在列的子集上应用约简可能导致更大的 Series 结果。请参阅 (GH 37799)。

In [24]: df = pd.DataFrame({"A": ["foo", "bar"], "B": [True, False]}, dtype=object)

In [25]: df["C"] = pd.Series([True, True])

以前的行为:

In [5]: df.all(bool_only=True)
Out[5]:
C    True
dtype: bool

In [6]: df[["B", "C"]].all(bool_only=True)
Out[6]:
B    False
C    True
dtype: bool

新的行为:

In [26]: In [5]: df.all(bool_only=True)
Out[26]: 
C    True
Length: 1, dtype: bool

In [27]: In [6]: df[["B", "C"]].all(bool_only=True)
Out[27]: 
C    True
Length: 1, dtype: bool

其他带有 numeric_only=None 的 DataFrame 约简也将避免这种病态行为 (GH 37827)

In [28]: df = pd.DataFrame({"A": [0, 1, 2], "B": ["a", "b", "c"]}, dtype=object)

以前的行为:

In [3]: df.mean()
Out[3]: Series([], dtype: float64)

In [4]: df[["A"]].mean()
Out[4]:
A    1.0
dtype: float64

新的行为:

In [3]: df.mean()
Out[3]:
A    1.0
dtype: float64

In [4]: df[["A"]].mean()
Out[4]:
A    1.0
dtype: float64

此外,带有 numeric_only=None 的 DataFrame 约简现在将与其对应的 Series 约简保持一致。特别是,对于 Series 方法会引发 TypeError 的约简,DataFrame 约简现在会将该列视为非数值类型,而不是转换为可能具有不同语义的 NumPy 数组 (GH 36076, GH 28949, GH 21020)。

In [29]: ser = pd.Series([0, 1], dtype="category", name="A")

In [30]: df = ser.to_frame()

以前的行为:

In [5]: df.any()
Out[5]:
A    True
dtype: bool

新的行为:

In [5]: df.any()
Out[5]: Series([], dtype: bool)

Python 最低版本要求提高#

pandas 1.2.0 支持 Python 3.7.1 及更高版本 (GH 35214)。

依赖项最低版本要求提高#

一些依赖项的最低支持版本已更新 (GH 35214)。如果已安装,我们现在要求

最低版本

必需

已更改

numpy

1.16.5

X

X

pytz

2017.3

X

X

python-dateutil

2.7.3

X

bottleneck

1.2.1

numexpr

2.6.8

X

pytest (dev)

5.0.1

X

mypy (dev)

0.782

X

对于可选库,通常建议使用最新版本。下表列出了 pandas 开发过程中当前正在测试的每个库的最低版本。低于最低测试版本范围的可选库可能仍然有效,但不被视为支持。

最低版本

已更改

beautifulsoup4

4.6.0

fastparquet

0.3.2

fsspec

0.7.4

gcsfs

0.6.0

lxml

4.3.0

X

matplotlib

2.2.3

X

numba

0.46.0

openpyxl

2.6.0

X

pyarrow

0.15.0

X

pymysql

0.7.11

X

pytables

3.5.1

X

s3fs

0.4.0

scipy

1.2.0

sqlalchemy

1.2.8

X

xarray

0.12.3

X

xlrd

1.2.0

X

xlsxwriter

1.0.2

X

xlwt

1.3.0

X

pandas-gbq

0.12.0

详情请参阅 Dependencies (依赖项)Optional dependencies (可选依赖项)

其他 API 变更#

  • 对于 Datetime-like Index 子类,Series.sort_values()Index.sort_values() 的降序排序现在是稳定的。这会影响在多列上对 DataFrame 进行排序、使用产生重复项的键函数进行排序或使用 Index.sort_values() 请求排序索引时的排序顺序。使用 Series.value_counts() 时,缺失值的计数不再强制位于重复计数列表的最后。相反,其位置对应于原始 Series 中的位置。使用 Index.sort_values() 对 Datetime-like Index 子类进行排序时,NaTs 以前会忽略 na_position 参数并排序到开头。现在它们遵循 na_position 参数,默认值为 last,与其他 Index 子类相同 (GH 35992)

  • Categorical.take(), DatetimeArray.take(), TimedeltaArray.take()PeriodArray.take() 传递无效的 fill_value 现在会引发 TypeError,而不是 ValueError (GH 37733)

  • 向带有 CategoricalDtypeSeries.shift() 传递无效的 fill_value 现在会引发 TypeError,而不是 ValueError (GH 37733)

  • 尝试向 IntervalIndex.insert()CategoricalIndex.insert() 插入无效值现在会引发 TypeError,而不是 ValueError (GH 37733)

  • 尝试对带有 CategoricalIndex 的 Series 使用无效的 fill_value 进行 reindex 现在会引发 TypeError,而不是 ValueError (GH 37733)

  • 带有包含非类别值的索引的 CategoricalIndex.append() 现在会进行类型转换而不是引发 TypeError (GH 38098)

弃用#

对未对齐的 DataFrame 调用 NumPy ufuncs

在 pandas 1.2.0 中,对未对齐的 DataFrame 调用 NumPy ufuncs 的行为发生了变化(在调用 ufunc 之前对输入进行对齐),但在 pandas 1.2.1 中此更改已回滚。现在弃用了不对齐的行为,更多详情请参阅1.2.1 版本说明

性能改进#

错误修复#

Categorical#

  • Categorical.fillna() 将总是返回一个副本,无论是否有 NA 需要填充都会验证传入的填充值,并且不允许使用 NaT 作为数值类别的填充值 (GH 36530)

  • Categorical.__setitem__() 中的错误,在使用元组值进行设置时错误地引发了异常 (GH 20439)

  • CategoricalIndex.equals() 中的错误,错误地将非类别项转换为 np.nan (GH 37667)

  • CategoricalIndex.where() 中的错误,错误地将非类别项设置为 np.nan 而不是引发 TypeError (GH 37977)

  • Categorical.to_numpy()np.array(categorical) 中的错误,对于时区敏感的 datetime64 类别,错误地丢弃了时区信息而不是转换为 object dtype (GH 38136)

日期时间相关#

  • DataFrame.combine_first() 中的错误,当日期时间类列不在原始 DataFrame 中时,它会将其他 DataFrame 中的该列转换为整数 (GH 28481)

  • DatetimeArray.date 中的错误,在使用只读后备数组时会引发 ValueError (GH 33530)

  • NaT 比较中的错误,在无效的不等式比较时未能引发 TypeError (GH 35046)

  • DateOffset 中的错误,当输入值超出正常范围(例如 months=12)时,从 pickle 文件重建的属性与原始对象不同 (GH 34511)

  • DatetimeIndex.get_slice_bound() 中的错误,不接受 datetime.date 对象或与时区敏感的 DatetimeIndex 进行比较的简单 Timestamp (GH 35690)

  • DatetimeIndex.slice_locs() 中的错误,不接受 datetime.date 对象 (GH 34077)

  • DatetimeIndex.searchsorted(), TimedeltaIndex.searchsorted(), PeriodIndex.searchsorted()Series.searchsorted() 中的错误,其 datetime64, timedelta64Period dtype 中 NaT 值的放置与 NumPy 不一致 (GH 36176, GH 36254)

  • DatetimeArray, TimedeltaArrayPeriodArray 方法 __setitem__ 中的不一致,将字符串数组转换为日期时间类标量,但不将标量字符串转换 (GH 36261)

  • DatetimeArray.take() 中的错误,错误地允许带有不匹配时区的 fill_value (GH 37356)

  • DatetimeIndex.shift 中的错误,在移动空索引时错误地引发了异常 (GH 14811)

  • TimestampDatetimeIndex 在时区敏感和非时区敏感对象之间的比较现在遵循标准库 datetime 的行为,对于 !=/== 返回 True/False,对于不等式比较则引发异常 (GH 28507)

  • DatetimeIndex.equals()TimedeltaIndex.equals() 中的错误,错误地将 int64 索引视为相等 (GH 36744)

  • Series.to_json(), DataFrame.to_json()read_json() 现在在 orient 结构为 table 时实现时区解析 (GH 35973)

  • astype() 现在尝试直接从 object 转换到 datetime64[ns, tz],并从字符串推断时区 (GH 35973)

  • TimedeltaIndex.sum()Series.sum() 中的错误,对于空的索引或 Series,其 timedelta64 dtype 返回 NaT 而不是 Timedelta(0) (GH 31751)

  • DatetimeArray.shift() 中的错误,错误地允许带有不匹配时区的 fill_value (GH 37299)

  • 将带有非零 offsetBusinessDay 添加到非标量对象时的错误 (GH 37457)

  • to_datetime() 中的错误,在使用只读数组时错误地引发了异常 (GH 34857)

  • Series.isin() 中的错误,对于 datetime64[ns] dtype 和 DatetimeIndex.isin(),错误地将整数转换为日期时间 (GH 36621)

  • Series.isin() 中的错误,对于 datetime64[ns] dtype 和 DatetimeIndex.isin(),未能将时区敏感和非时区敏感的日期时间始终视为不同 (GH 35728)

  • Series.isin() 中的错误,对于 PeriodDtype dtype 和 PeriodIndex.isin(),未能将具有不同 PeriodDtype 的参数始终视为不同 (GH 37528)

  • Period 构造函数中的错误,现在正确处理 value 参数中的纳秒 (GH 34621GH 17053)

Timedelta#

时区#

数值#

转换#

  • DataFrame.to_dict() 中的错误,在使用 orient='records' 时现在为日期时间类列返回 Python 原生的 datetime 对象 (GH 21256)

  • Series.astype() 中的错误,在存在 pd.NA 值时,从 stringfloat 的转换引发了异常 (GH 37626)

字符串#

区间#

索引#

  • PeriodIndex.get_loc() 中的错误,对于非日期类字符串错误地引发了 ValueError 而不是 KeyError,导致 Series.__getitem__(), Series.__contains__()Series.loc.__getitem__() 中出现类似错误 (GH 34240)

  • Index.sort_values() 中的错误,当传入空值时,该方法会尝试比较缺失值而中断,而不是将它们推到排序顺序的末尾 (GH 35584)

  • Index.get_indexer()Index.get_indexer_non_unique() 中的错误,返回了 int64 数组而不是 intp (GH 36359)

  • DataFrame.sort_index() 中的错误,将参数 ascending 作为列表传递给单层索引时结果不正确 (GH 32334)

  • DataFrame.reset_index() 中存在一个 bug,在使用含有 MultiIndex 且某个层级是 Categorical dtype 且存在缺失值的输入时,会错误地抛出 ValueError 异常 (GH 24206)

  • 使用布尔掩码对日期时间类型值进行索引时,有时会错误地返回视图而非副本,这是一个 bug (GH 36210)

  • DataFrame.__getitem__()DataFrame.loc.__getitem__() 中,处理具有 IntervalIndex 列和数字索引器时存在一个 bug (GH 26490)

  • Series.loc.__getitem__() 中,处理非唯一 MultiIndex 和空列表索引器时存在一个 bug (GH 13691)

  • 对带有 MultiIndex 且层级名称为 "0"SeriesDataFrame 进行索引时存在一个 bug (GH 37194)

  • Series.__getitem__() 中,使用无符号整型数组作为索引器时存在一个 bug,会产生错误结果或分段故障,而非抛出 KeyError 异常 (GH 37218)

  • Index.where() 中存在一个 bug,会错误地将数字值转换为字符串 (GH 37591)

  • DataFrame.loc() 中,当索引器为具有负步长的切片时会返回空结果,这是一个 bug (GH 38071)

  • 当索引为 object dtype 且给定的数字标签存在于索引中时,Series.loc()DataFrame.loc() 会抛出异常,这是一个 bug (GH 26491)

  • DataFrame.loc() 中,将 `loc` 应用于 MultiIndex 的单个层级时存在一个 bug,会返回请求的键以及缺失值 (GH 27104)

  • 对带有 CategoricalIndexSeriesDataFrame 使用包含 NA 值的列表状索引器进行索引时存在一个 bug (GH 37722)

  • DataFrame.loc.__setitem__() 中,扩展具有混合 dtype 的空 DataFrame 时存在一个 bug (GH 37932)

  • DataFrame.xs() 中存在一个 bug,会忽略对列设置的 droplevel=False 参数 (GH 19056)

  • DataFrame.reindex() 中,处理 `tolerance` 非 `None` 或 `method="nearest"` 的空 DataFrame 时存在一个 bug,会错误地抛出 IndexingError (GH 27315)

  • 对带有 CategoricalIndexSeriesDataFrame 使用包含索引的 categories 中存在但索引本身中不存在元素的列表状索引器进行索引时存在一个 bug,未能抛出 KeyError (GH 37901)

  • 向具有数字 Index 列的 DataFrame 插入布尔标签时存在一个 bug,会错误地转换为整数 (GH 36319)

  • DataFrame.iloc()Series.iloc()__setitem__ 中对齐对象时存在一个 bug (GH 22046)

  • MultiIndex.drop() 中存在一个 bug,在给定的标签部分存在时不会抛出异常 (GH 37820)

  • DataFrame.loc() 中存在一个 bug,在给定缺失组合且其余层级使用 slice(None) 时不会抛出 KeyError 异常 (GH 19556)

  • DataFrame.loc() 中,使用非整数切片选择 MultiIndex 中的值时会抛出 TypeError 异常,这是一个 bug (GH 25165, GH 24263)

  • Series.at() 中存在一个 bug,在索引是单层 MultiIndex 时会返回包含一个元素的 Series 而非标量值 (GH 38053)

  • DataFrame.loc() 中存在一个 bug,在索引器的顺序与用于过滤的 MultiIndex 顺序不同时,会错误地返回和分配元素 (GH 31330, GH 34603)

  • DataFrame.loc()DataFrame.__getitem__() 中,当列是单层 MultiIndex 时会抛出 KeyError 异常,这是一个 bug (GH 29749)

  • Series.__getitem__()DataFrame.__getitem__() 中,处理 IntervalIndex 时会抛出空的 KeyError 异常(不包含缺失的键),这是一个 bug (GH 27365)

  • 在带有 CategoricalIndexDataFrameSeries 上设置新标签时存在一个 bug,当新标签不在索引的 categories 中时会错误地抛出 TypeError 异常 (GH 38098)

  • Series.loc()Series.iloc() 中,向等长的 object Series 中插入列表状的 np.arraylisttuple 时会抛出 ValueError 异常,这是一个 bug (GH 37748, GH 37486)

  • Series.loc()Series.iloc() 中存在一个 bug,在使用列表状的 ExtensionArray 设置 object Series 的值时,会设置所有值而非插入 (GH 38271)

缺失值#

MultiIndex#

输入/输出 (I/O)#

Period#

绘图 (Plotting)#

Styler#

  • Bug in Styler.render() HTML was generated incorrectly because of formatting error in rowspan attribute, it now matches with w3 syntax (GH 38234)

Groupby/resample/rolling#

Reshaping#

ExtensionArray#

Other#

贡献者#

共有 257 人为此版本贡献了补丁。姓名旁带有“+”号的人是首次贡献补丁。

  • 21CSM +

  • AbdulMAbdi +

  • Abhiraj Hinge +

  • Abhishek Mangla +

  • Abo7atm +

  • Adam Spannbauer +

  • Albert Villanova del Moral

  • Alex Kirko

  • Alex Lim +

  • Alex Thorne +

  • Aleš Erjavec +

  • Ali McMaster

  • Amanda Dsouza +

  • Amim Knabben +

  • Andrew Wieteska

  • Anshoo Rajput +

  • Anthony Milbourne

  • Arun12121 +

  • Asish Mahapatra

  • Avinash Pancham +

  • BeanNan +

  • Ben Forbes +

  • Brendan Wilby +

  • Bruno Almeida +

  • Byron Boulton +

  • Chankey Pathak

  • Chris Barnes +

  • Chris Lynch +

  • Chris Withers

  • Christoph Deil +

  • Christopher Hadley +

  • Chuanzhu Xu

  • Coelhudo +

  • Dan Moore

  • Daniel Saxton

  • David Kwong +

  • David Li +

  • David Mrva +

  • Deepak Pandey +

  • Deepyaman Datta

  • Devin Petersohn

  • Dmitriy Perepelkin +

  • Douglas Hanley +

  • Dāgs Grīnbergs +

  • Eli Treuherz +

  • Elliot Rampono +

  • Erfan Nariman

  • Eric Goddard

  • Eric Leung +

  • Eric Wieser

  • Ethan Chen +

  • Eve +

  • Eyal Trabelsi +

  • Fabian Gebhart +

  • Fangchen Li

  • Felix Claessen +

  • Finlay Maguire +

  • Florian Roscheck +

  • Gabriel Monteiro

  • Gautham +

  • Gerard Jorgensen +

  • Gregory Livschitz

  • Hans

  • Harsh Sharma

  • Honfung Wong +

  • Igor Gotlibovych +

  • Iqrar Agalosi Nureyza

  • Irv Lustig

  • Isaac Virshup

  • Jacob Peacock

  • Jacob Stevens-Haas +

  • Jan Müller +

  • Janus

  • Jeet Parekh

  • Jeff Hernandez +

  • Jeff Reback

  • Jiaxiang

  • Joao Pedro Berno Zanutto +

  • Joel Nothman

  • Joel Whittier +

  • John Karasinski +

  • John McGuigan +

  • Johnny Pribyl +

  • Jonas Laursen +

  • Jonathan Shreckengost +

  • Joris Van den Bossche

  • Jose +

  • JoseNavy +

  • Josh Temple +

  • Jun Kudo +

  • Justin Essert

  • Justin Sexton +

  • Kaiqi Dong

  • Kamil Trocewicz +

  • Karthik Mathur

  • Kashif +

  • Kenny Huynh

  • Kevin Sheppard

  • Kumar Shivam +

  • Leonardus Chen +

  • Levi Matus +

  • Lucas Rodés-Guirao +

  • Luis Pinto +

  • Lynch +

  • Marc Garcia

  • Marco Gorelli

  • Maria-Alexandra Ilie +

  • Marian Denes

  • Mark Graham +

  • Martin Durant

  • Matt Roeschke

  • Matthew Roeschke

  • Matthias Bussonnier

  • Maxim Ivanov +

  • Mayank Chaudhary +

  • MeeseeksMachine

  • Meghana Varanasi +

  • Metehan Kutlu +

  • Micael Jarniac +

  • Micah Smith +

  • Michael Marino

  • Miroslav Šedivý

  • Mohammad Jafar Mashhadi

  • Mohammed Kashif +

  • Nagesh Kumar C +

  • Nidhi Zare +

  • Nikhil Choudhary +

  • Number42

  • Oleh Kozynets +

  • OlivierLuG

  • Pandas Development Team

  • Paolo Lammens +

  • Paul Ganssle

  • Pax +

  • Peter Liu +

  • Philip Cerles +

  • Pranjal Bhardwaj +

  • Prayag Savsani +

  • Purushothaman Srikanth +

  • Qbiwan +

  • Rahul Chauhan +

  • Rahul Sathanapalli +

  • Rajat Bishnoi +

  • Ray Bell

  • Reshama Shaikh +

  • Richard Shadrach

  • Robert Bradshaw

  • Robert de Vries

  • Rohith295

  • S Mono +

  • S.TAKENO +

  • Sahid Velji +

  • Sam Cohen +

  • Sam Ezebunandu +

  • Sander +

  • Sarthak +

  • Sarthak Vineet Kumar +

  • Satrio H Wicaksono +

  • Scott Lasley

  • Shao Yang Hong +

  • Sharon Woo +

  • Shubham Mehra +

  • Simon Hawkins

  • Sixuan (Cherie) Wu +

  • Souris Ash +

  • Steffen Rehberg

  • Suvayu Ali

  • Sven

  • SylvainLan +

  • T. JEGHAM +

  • Terji Petersen

  • Thomas Dickson +

  • Thomas Heavey +

  • Thomas Smith

  • Tobias Pitters

  • Tom Augspurger

  • Tomasz Sakrejda +

  • Torsten Wörtwein +

  • Ty Mick +

  • UrielMaD +

  • Uwe L. Korn

  • Vikramaditya Gaonkar +

  • VirosaLi +

  • W.R +

  • Warren White +

  • Wesley Boelrijk +

  • William Ayd

  • Yanxian Lin +

  • Yassir Karroum +

  • Yong Kai Yi +

  • Yuanhao Geng +

  • Yury Mikhaylov +

  • Yutaro Ikeda

  • Yuya Takashina +

  • Zach Brookler +

  • Zak Kohler +

  • ZhihuiChen0903 +

  • abmyii

  • alexhtn +

  • asharma13524 +

  • attack68

  • beanan +

  • chinhwee

  • cleconte987

  • danchev +

  • ebardie +

  • edwardkong

  • elliot rampono +

  • estasney +

  • gabicca

  • geetha-rangaswamaiah +

  • gfyoung

  • guru kiran

  • hardikpnsp +

  • icanhazcodeplz +

  • ivanovmg +

  • jbrockmendel

  • jeschwar

  • jnecus

  • joooeey +

  • junk +

  • krajatcl +

  • lacrosse91 +

  • leo +

  • lpkirwin +

  • lrjball

  • lucasrodes +

  • ma3da +

  • mavismonica +

  • mlondschien +

  • mzeitlin11 +

  • nguevara +

  • nrebena

  • parkdj1 +

  • partev

  • patrick

  • realead

  • rxxg +

  • samilAyoub +

  • sanderland

  • shawnbrown

  • sm1899 +

  • smartvinnetou

  • ssortman +

  • steveya +

  • taytzehao +

  • tiagohonorato +

  • timhunderwood

  • tkmz-n +

  • tnwei +

  • tpanza +

  • vineethraj510 +

  • vmdhhh +

  • xinrong-databricks +

  • yonas kassa +

  • yonashub +

  • Ádám Lippai +