1.1.0 的新增内容(2020 年 7 月 28 日)#

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

增强功能#

loc 引发的 KeyErrors 指定缺少标签#

以前,如果调用缺少标签.loc,则会引发 KeyError,表明不再支持此操作。

现在,错误消息还包括缺失标签的列表(最多 10 个项目,显示宽度 80 个字符)。参见GH 34272

所有 dtypes 现在都可以转换为StringDtype#

StringDtype以前,通常仅当数据已经是 onlystr或 nan时才可以声明或转换为( GH 31204 )。 StringDtype现在适用于astype(str)dtype=str工作的所有情况:

例如,下面的代码现在可以工作:

In [1]: ser = pd.Series([1, "abc", np.nan], dtype="string")

In [2]: ser
Out[2]: 
0       1
1     abc
2    <NA>
dtype: string

In [3]: ser[0]
Out[3]: '1'

In [4]: pd.Series([1, 2, np.nan], dtype="Int64").astype("string")
Out[4]: 
0       1
1       2
2    <NA>
dtype: string

非单调PeriodIndex部分字符串切片#

PeriodIndex现在支持非单调索引的部分字符串切片,镜像DatetimeIndex行为(GH 31096

例如:

In [5]: dti = pd.date_range("2014-01-01", periods=30, freq="30D")

In [6]: pi = dti.to_period("D")

In [7]: ser_monotonic = pd.Series(np.arange(30), index=pi)

In [8]: shuffler = list(range(0, 30, 2)) + list(range(1, 31, 2))

In [9]: ser = ser_monotonic.iloc[shuffler]

In [10]: ser
Out[10]: 
2014-01-01     0
2014-03-02     2
2014-05-01     4
2014-06-30     6
2014-08-29     8
              ..
2015-09-23    21
2015-11-22    23
2016-01-21    25
2016-03-21    27
2016-05-20    29
Freq: D, Length: 30, dtype: int64
In [11]: ser["2014"]
Out[11]: 
2014-01-01     0
2014-03-02     2
2014-05-01     4
2014-06-30     6
2014-08-29     8
2014-10-28    10
2014-12-27    12
2014-01-31     1
2014-04-01     3
2014-05-31     5
2014-07-30     7
2014-09-28     9
2014-11-27    11
Freq: D, dtype: int64

In [12]: ser.loc["May 2015"]
Out[12]: 
2015-05-26    17
Freq: D, dtype: int64

比较两个DataFrame或两个Series并总结差异#

我们添加了DataFrame.compare()Series.compare()来比较两个DataFrame或两个SeriesGH 30429

In [13]: df = pd.DataFrame(
   ....:     {
   ....:         "col1": ["a", "a", "b", "b", "a"],
   ....:         "col2": [1.0, 2.0, 3.0, np.nan, 5.0],
   ....:         "col3": [1.0, 2.0, 3.0, 4.0, 5.0]
   ....:     },
   ....:     columns=["col1", "col2", "col3"],
   ....: )
   ....: 

In [14]: df
Out[14]: 
  col1  col2  col3
0    a   1.0   1.0
1    a   2.0   2.0
2    b   3.0   3.0
3    b   NaN   4.0
4    a   5.0   5.0
In [15]: df2 = df.copy()

In [16]: df2.loc[0, 'col1'] = 'c'

In [17]: df2.loc[2, 'col3'] = 4.0

In [18]: df2
Out[18]: 
  col1  col2  col3
0    c   1.0   1.0
1    a   2.0   2.0
2    b   3.0   4.0
3    b   NaN   4.0
4    a   5.0   5.0
In [19]: df.compare(df2)
Out[19]: 
  col1       col3      
  self other self other
0    a     c  NaN   NaN
2  NaN   NaN  3.0   4.0

请参阅用户指南了解更多详细信息。

允许在 groupby key 中使用 NA #

对于groupby,我们添加了一个dropna关键字DataFrame.groupby()和 ,Series.groupby()以便允许NA在组键中使用值。用户可以定义dropna是否FalseNA在 groupby 键中包含值。默认设置为Truefordropna以保持向后兼容性(GH 3729

In [20]: df_list = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]

In [21]: df_dropna = pd.DataFrame(df_list, columns=["a", "b", "c"])

In [22]: df_dropna
Out[22]: 
   a    b  c
0  1  2.0  3
1  1  NaN  4
2  2  1.0  3
3  1  2.0  2
# Default ``dropna`` is set to True, which will exclude NaNs in keys
In [23]: df_dropna.groupby(by=["b"], dropna=True).sum()
Out[23]: 
     a  c
b        
1.0  2  3
2.0  2  5

# In order to allow NaN in keys, set ``dropna`` to False
In [24]: df_dropna.groupby(by=["b"], dropna=False).sum()
Out[24]: 
     a  c
b        
1.0  2  3
2.0  2  5
NaN  1  4

参数的默认设置dropnaTrue这意味着NA不包含在组键中。

用键排序#

key我们为DataFrame和排序方法添加了一个参数Series,包括 DataFrame.sort_values()DataFrame.sort_index()Series.sort_values()Series.sort_index()。可以key是任何可调用函数,在执行排序之前逐列应用于用于排序的每一列(GH 27237)。有关详细信息,请参阅带有键的 sort_values带有键的 sort_index 。

In [25]: s = pd.Series(['C', 'a', 'B'])

In [26]: s
Out[26]: 
0    C
1    a
2    B
dtype: object
In [27]: s.sort_values()
Out[27]: 
2    B
0    C
1    a
dtype: object

请注意它是如何以大写字母优先排序的。如果我们应用该Series.str.lower() 方法,我们会得到

In [28]: s.sort_values(key=lambda x: x.str.lower())
Out[28]: 
1    a
2    B
0    C
dtype: object

当应用于 a 时DataFrame,它们的键将按列应用于所有列或子集(如果 by指定),例如

In [29]: df = pd.DataFrame({'a': ['C', 'C', 'a', 'a', 'B', 'B'],
   ....:                    'b': [1, 2, 3, 4, 5, 6]})
   ....: 

In [30]: df
Out[30]: 
   a  b
0  C  1
1  C  2
2  a  3
3  a  4
4  B  5
5  B  6
In [31]: df.sort_values(by=['a'], key=lambda col: col.str.lower())
Out[31]: 
   a  b
2  a  3
3  a  4
4  B  5
5  B  6
0  C  1
1  C  2

DataFrame.sort_values()有关更多详细信息,请参阅、 Series.sort_values()和中的示例和文档sort_index()

Timestamp 构造函数中的折叠参数支持#

Timestamp:现在支持根据PEP 495 的仅关键字折叠参数,类似于父datetime.datetime类。它支持接受折叠作为初始化参数并从其他构造函数参数(GH 25057GH 31338)推断折叠。支持仅限于dateutil时区,因为pytz不支持折叠。

例如:

In [32]: ts = pd.Timestamp("2019-10-27 01:30:00+00:00")

In [33]: ts.fold
Out[33]: 0
In [34]: ts = pd.Timestamp(year=2019, month=10, day=27, hour=1, minute=30,
   ....:                   tz="dateutil/Europe/London", fold=1)
   ....: 

In [35]: ts
Out[35]: Timestamp('2019-10-27 01:30:00+0000', tz='dateutil//usr/share/zoneinfo/Europe/London')

有关使用折叠的更多信息,请参阅用户指南中的折叠小节。

解析 to_datetime 中不同时区的时区感知格式#

to_datetime()%Z现在支持解析包含来自不同时区的时区名称 ( ) 和 UTC 偏移量 ( )的格式%z,然后通过设置将它们转换为 UTC utc=True。如果未设置(GH 32792),这将返回DatetimeIndexUTC 时区,而不是Indexdtype 。objectutc=True

例如:

In [36]: tz_strs = ["2010-01-01 12:00:00 +0100", "2010-01-01 12:00:00 -0100",
   ....:            "2010-01-01 12:00:00 +0300", "2010-01-01 12:00:00 +0400"]
   ....: 

In [37]: pd.to_datetime(tz_strs, format='%Y-%m-%d %H:%M:%S %z', utc=True)
Out[37]: 
DatetimeIndex(['2010-01-01 11:00:00+00:00', '2010-01-01 13:00:00+00:00',
               '2010-01-01 09:00:00+00:00', '2010-01-01 08:00:00+00:00'],
              dtype='datetime64[ns, UTC]', freq=None)
In[37]: pd.to_datetime(tz_strs, format='%Y-%m-%d %H:%M:%S %z')
Out[37]:
Index([2010-01-01 12:00:00+01:00, 2010-01-01 12:00:00-01:00,
       2010-01-01 12:00:00+03:00, 2010-01-01 12:00:00+04:00],
      dtype='object')

Grouper 和 resample 现在支持参数 origin 和 offset #

Grouper现在DataFrame.resample()支持论点originoffset。它允许用户控制调整分组的时间戳。 (GH 31809

分组的箱根据时间序列起点当天的开始进行调整。这对于一天的倍数(如30D)或一天的除数(如90s1min)的频率非常有效。但它可能会与某些不符合此标准的频率产生不一致。要更改此行为,您现在可以使用参数指定固定时间戳origin

现在不推荐使用两个参数(更多信息请参见 的文档DataFrame.resample()):

  • base应替换为offset.

  • loffsetDataFrame应通过重采样后直接向索引添加偏移量来替换。

使用的小例子origin

In [38]: start, end = '2000-10-01 23:30:00', '2000-10-02 00:30:00'

In [39]: middle = '2000-10-02 00:00:00'

In [40]: rng = pd.date_range(start, end, freq='7min')

In [41]: ts = pd.Series(np.arange(len(rng)) * 3, index=rng)

In [42]: ts
Out[42]: 
2000-10-01 23:30:00     0
2000-10-01 23:37:00     3
2000-10-01 23:44:00     6
2000-10-01 23:51:00     9
2000-10-01 23:58:00    12
2000-10-02 00:05:00    15
2000-10-02 00:12:00    18
2000-10-02 00:19:00    21
2000-10-02 00:26:00    24
Freq: 7min, dtype: int64

使用默认行为重新采样'start_day'(原点为):2000-10-01 00:00:00

In [43]: ts.resample('17min').sum()
Out[43]: 
2000-10-01 23:14:00     0
2000-10-01 23:31:00     9
2000-10-01 23:48:00    21
2000-10-02 00:05:00    54
2000-10-02 00:22:00    24
Freq: 17min, dtype: int64

In [44]: ts.resample('17min', origin='start_day').sum()
Out[44]: 
2000-10-01 23:14:00     0
2000-10-01 23:31:00     9
2000-10-01 23:48:00    21
2000-10-02 00:05:00    54
2000-10-02 00:22:00    24
Freq: 17min, dtype: int64

使用固定原点重新采样:

In [45]: ts.resample('17min', origin='epoch').sum()
Out[45]: 
2000-10-01 23:18:00     0
2000-10-01 23:35:00    18
2000-10-01 23:52:00    27
2000-10-02 00:09:00    39
2000-10-02 00:26:00    24
Freq: 17min, dtype: int64

In [46]: ts.resample('17min', origin='2000-01-01').sum()
Out[46]: 
2000-10-01 23:24:00     3
2000-10-01 23:41:00    15
2000-10-01 23:58:00    45
2000-10-02 00:15:00    45
Freq: 17min, dtype: int64

如果需要,您可以使用将添加到默认值的参数offset(a )来调整 bin 。Timedeltaorigin

有关完整示例,请参阅:使用原点或偏移量调整 bin 的开始位置

fsspec 现在用于文件系统处理#

对于读取和写入本地以外的文件系统以及从 HTTP(S) 读取,可选依赖项fsspec将用于分派操作 ( GH 33452 )。这将为已受支持的 S3 和 GCS 存储提供不变的功能,但还会添加对其他几种存储实现的支持,例如Azure Datalake 和 Blob、SSH、FTP、dropbox 和 github。有关文档和功能,请参阅fsspec 文档

与 S3 和 GCS 接口的现有功能将不会受到此更改的影响,因为fsspec仍会引入与以前相同的软件包。

其他增强功能#

值得注意的错误修复#

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

MultiIndex.get_indexer正确解释method论证#

这会将MultiIndex.get_indexer()withmethod='backfill'或的行为恢复method='pad'到 pandas 0.23.0 之前的行为。特别是,MultiIndex 被视为元组列表,并且根据这些元组列表的顺序进行填充或回填(GH 29896)。

作为一个例子,给出:

In [47]: df = pd.DataFrame({
   ....:     'a': [0, 0, 0, 0],
   ....:     'b': [0, 2, 3, 4],
   ....:     'c': ['A', 'B', 'C', 'D'],
   ....: }).set_index(['a', 'b'])
   ....: 

In [48]: mi_2 = pd.MultiIndex.from_product([[0], [-1, 0, 1, 3, 4, 5]])

df重新索引withmi_2和 using 的区别method='backfill'可以在这里看到:

熊猫 >= 0.23,< 1.1.0

In [1]: df.reindex(mi_2, method='backfill')
Out[1]:
      c
0 -1  A
   0  A
   1  D
   3  A
   4  A
   5  C

熊猫 <0.23,>= 1.1.0

In [49]: df.reindex(mi_2, method='backfill')
Out[49]: 
        c
0 -1    A
   0    A
   1    B
   3    C
   4    D
   5  NaN

df重新索引withmi_2和 using 的区别method='pad'可以在这里看到:

熊猫 >= 0.23,< 1.1.0

In [1]: df.reindex(mi_2, method='pad')
Out[1]:
        c
0 -1  NaN
   0  NaN
   1    D
   3  NaN
   4    A
   5    C

熊猫 < 0.23,>= 1.1.0

In [50]: df.reindex(mi_2, method='pad')
Out[50]: 
        c
0 -1  NaN
   0    A
   1    A
   3    C
   4    D
   5    D

失败的基于标签的查找总是引发 KeyError #

标签查找series[key]series.loc[key]用于根据键的类型和 的类型frame.loc[key] 来引发KeyError或。这些现在持续提高(GH 31867TypeErrorIndexKeyError

In [51]: ser1 = pd.Series(range(3), index=[0, 1, 2])

In [52]: ser2 = pd.Series(range(3), index=pd.date_range("2020-02-01", periods=3))

以前的行为

In [3]: ser1[1.5]
...
TypeError: cannot do label indexing on Int64Index with these indexers [1.5] of type float

In [4] ser1["foo"]
...
KeyError: 'foo'

In [5]: ser1.loc[1.5]
...
TypeError: cannot do label indexing on Int64Index with these indexers [1.5] of type float

In [6]: ser1.loc["foo"]
...
KeyError: 'foo'

In [7]: ser2.loc[1]
...
TypeError: cannot do label indexing on DatetimeIndex with these indexers [1] of type int

In [8]: ser2.loc[pd.Timestamp(0)]
...
KeyError: Timestamp('1970-01-01 00:00:00')

新行为

In [3]: ser1[1.5]
...
KeyError: 1.5

In [4] ser1["foo"]
...
KeyError: 'foo'

In [5]: ser1.loc[1.5]
...
KeyError: 1.5

In [6]: ser1.loc["foo"]
...
KeyError: 'foo'

In [7]: ser2.loc[1]
...
KeyError: 1

In [8]: ser2.loc[pd.Timestamp(0)]
...
KeyError: Timestamp('1970-01-01 00:00:00')

类似地,如果传递了不兼容的密钥,并且如果传递了丢失的密钥,DataFrame.at()则将Series.at()引发 aTypeError而不是 a ,匹配( GH 31722 )的行为ValueErrorKeyError.loc[]

多索引上的整数查找失败引发 KeyError #

当索引的第一级中不存在一个或多个整数键时,MultiIndex使用具有整数 dtype 第一级的整数进行索引错误地失败( GH 33539KeyError

In [53]: idx = pd.Index(range(4))

In [54]: dti = pd.date_range("2000-01-03", periods=3)

In [55]: mi = pd.MultiIndex.from_product([idx, dti])

In [56]: ser = pd.Series(range(len(mi)), index=mi)

以前的行为

In [5]: ser[[5]]
Out[5]: Series([], dtype: int64)

新行为

In [5]: ser[[5]]
...
KeyError: '[5] not in index'

DataFrame.merge()保留右框架的行顺序#

DataFrame.merge()现在在执行右合并时保留右帧的行顺序(GH 27453

In [57]: left_df = pd.DataFrame({'animal': ['dog', 'pig'],
   ....:                        'max_speed': [40, 11]})
   ....: 

In [58]: right_df = pd.DataFrame({'animal': ['quetzal', 'pig'],
   ....:                         'max_speed': [80, 11]})
   ....: 

In [59]: left_df
Out[59]: 
  animal  max_speed
0    dog         40
1    pig         11

In [60]: right_df
Out[60]: 
    animal  max_speed
0  quetzal         80
1      pig         11

以前的行为

>>> left_df.merge(right_df, on=['animal', 'max_speed'], how="right")
    animal  max_speed
0      pig         11
1  quetzal         80

新行为

In [61]: left_df.merge(right_df, on=['animal', 'max_speed'], how="right")
Out[61]: 
    animal  max_speed
0  quetzal         80
1      pig         11

当某些列不存在时分配给 DataFrame 的多个列#

DataFrame当某些列不存在时,对 a 的多个列进行赋值会预先将值分配给最后一列。现在,将使用正确的值构造新列。 (GH 13658

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

In [63]: df
Out[63]: 
   a  b
0  0  3
1  1  4
2  2  5

以前的行为

In [3]: df[['a', 'c']] = 1
In [4]: df
Out[4]:
   a  b
0  1  1
1  1  1
2  1  1

新行为

In [64]: df[['a', 'c']] = 1

In [65]: df
Out[65]: 
   a  b  c
0  1  3  1
1  1  4  1
2  1  5  1

跨 groupby 减少的一致性#

使用DataFrame.groupby()withas_index=True和聚合nunique会将分组列包含在结果的列中。现在,分组列仅出现在索引中,与其他缩减一致。 (GH 32579

In [66]: df = pd.DataFrame({"a": ["x", "x", "y", "y"], "b": [1, 1, 2, 3]})

In [67]: df
Out[67]: 
   a  b
0  x  1
1  x  1
2  y  2
3  y  3

以前的行为

In [3]: df.groupby("a", as_index=True).nunique()
Out[4]:
   a  b
a
x  1  1
y  1  2

新行为

In [68]: df.groupby("a", as_index=True).nunique()
Out[68]: 
   b
a   
x  1
y  2

使用DataFrame.groupby()withas_index=False和函数idxmax, idxmin, mad, nunique, sem, skew, orstd将修改分组列。现在分组列保持不变,与其他缩减一致。 (GH 21090GH 10355

以前的行为

In [3]: df.groupby("a", as_index=False).nunique()
Out[4]:
   a  b
0  1  1
1  1  2

新行为

In [69]: df.groupby("a", as_index=False).nunique()
Out[69]: 
   a  b
0  x  1
1  y  2

该方法DataFrameGroupBy.size()以前会忽略as_index=False.现在,分组列作为列返回,使结果成为 aDataFrame而不是 a Series。 (GH 32599

以前的行为

In [3]: df.groupby("a", as_index=False).size()
Out[4]:
a
x    2
y    2
dtype: int64

新行为

In [70]: df.groupby("a", as_index=False).size()
Out[70]: 
   a  size
0  x     2
1  y     2

DataFrameGroupby.agg()as_index=False重新标记列时丢失结果#

以前,当该选项设置为 且结果列被重新标记DataFrameGroupby.agg()时,会丢失结果列。在这种情况下,结果值被替换为先前的索引(GH 32240)。as_indexFalse

In [71]: df = pd.DataFrame({"key": ["x", "y", "z", "x", "y", "z"],
   ....:                    "val": [1.0, 0.8, 2.0, 3.0, 3.6, 0.75]})
   ....: 

In [72]: df
Out[72]: 
  key   val
0   x  1.00
1   y  0.80
2   z  2.00
3   x  3.00
4   y  3.60
5   z  0.75

以前的行为

In [2]: grouped = df.groupby("key", as_index=False)
In [3]: result = grouped.agg(min_val=pd.NamedAgg(column="val", aggfunc="min"))
In [4]: result
Out[4]:
     min_val
 0   x
 1   y
 2   z

新行为

In [73]: grouped = df.groupby("key", as_index=False)

In [74]: result = grouped.agg(min_val=pd.NamedAgg(column="val", aggfunc="min"))

In [75]: result
Out[75]: 
  key  min_val
0   x     1.00
1   y     0.80
2   z     0.75

apply 和 applymap onDataFrame仅计算第一行/列一次#

In [76]: df = pd.DataFrame({'a': [1, 2], 'b': [3, 6]})

In [77]: def func(row):
   ....:     print(row)
   ....:     return row
   ....: 

以前的行为

In [4]: df.apply(func, axis=1)
a    1
b    3
Name: 0, dtype: int64
a    1
b    3
Name: 0, dtype: int64
a    2
b    6
Name: 1, dtype: int64
Out[4]:
   a  b
0  1  3
1  2  6

新行为

In [78]: df.apply(func, axis=1)
a    1
b    3
Name: 0, dtype: int64
a    2
b    6
Name: 1, dtype: int64
Out[78]: 
   a  b
0  1  3
1  2  6

向后不兼容的 API 更改#

添加了check_freq参数到testing.assert_frame_equaland testing.assert_series_equal#

check_freq参数已添加到testing.assert_frame_equal()pandas testing.assert_series_equal()1.1.0 中,默认为True.testing.assert_frame_equal()现在如果索引没有相同的频率则testing.assert_series_equal()提高。 AssertionErrorpandas 1.1.0之前,没有检查索引频率。

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

更新了一些依赖项的最低支持版本(GH 33718GH 29766GH 2972​​3、 pytables >= 3.4.3)。如果安装了,我们现在需要:

包裹

最低版本

必需的

改变了

麻木

1.15.4

X

X

皮茨

2015.4

X

python-dateutil

2.7.3

X

X

瓶颈

1.2.1

数值表达式

2.6.2

pytest(开发)

4.0.2

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

包裹

最低版本

改变了

美丽汤4

4.6.0

快速镶木地板

0.3.2

FS规范

0.7.4

GCSFS

0.6.0

X

lxml

3.8.0

绘图库

2.2.2

努巴

0.46.0

开放式pyxl

2.5.7

皮箭头

0.13.0

pymysql

0.7.1

pytables

3.4.3

X

s3fs

0.4.0

X

scipy

1.2.0

X

sqlalchemy

1.1.4

阵列

0.8.2

xlrd

1.1.0

XLSX作家

0.9.8

xlwt

1.2.0

pandas-GBQ

1.2.0

X

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

发展变化#

  • Cython 的最低版本现在是最新的错误修复版本 (0.29.16) ( GH 33334 )。

弃用#

  • Series不推荐使用包含切片(例如 )的单项列表进行查找,并将在未来版本中提出。要么将列表转换为元组,要么直接传递切片(GH 31333ser[[slice(0, 4)]]

  • DataFrame.mean()并在未来版本中包含DataFrame.median()和列( GH 29941numeric_only=Nonedatetime64datetime64tz

  • 使用位置切片设置值.loc已被弃用,并将在未来版本中提高。.loc与标签或.iloc位置一起使用( GH 31840 )

  • DataFrame.to_dict()已弃用接受简称,orient并将在未来版本中提出 ( GH 32515 )

  • Categorical.to_dense()已弃用并将在未来版本中删除,请改用np.asarray(cat)( GH 32639 )

  • fastpath构造函数中的关键字已SingleBlockManager弃用,并将在未来版本中删除(GH 33092

  • 不推荐以insuffixes形式提供。请提供一个元组(GH 33740GH 34741)。setpandas.merge()

  • Series使用多维索引器对a 进行索引(例如现在返回 an )会引发 a 。在索引之前转换为 NumPy 数组(GH 27837[:, None]ndarrayFutureWarning

  • Index.is_mixed()已弃用并将在未来版本中删除,请index.inferred_type直接检查(GH 32922

  • 不推荐将第一个参数以外的任何参数read_html()作为位置参数传递。所有其他参数应作为关键字参数给出(GH 27573)。

  • 不推荐将除path_or_buf(第一个) 之外的任何参数作为位置参数传递。read_json()所有其他参数应作为关键字参数给出(GH 27573)。

  • read_excel()不推荐将除前两个之外的任何参数作为位置参数传递。所有其他参数应作为关键字参数给出(GH 27573)。

  • pandas.api.types.is_categorical()已弃用并将在未来版本中删除;使用pandas.api.types.is_categorical_dtype()GH 33385

  • Index.get_value()已弃用并将在未来版本中删除(GH 19728

  • Series.dt.week()Series.dt.weekofyear()弃用并将在未来版本中删除,请改用Series.dt.isocalendar().week()( GH 33595 )

  • DatetimeIndex.week()DatetimeIndex.weekofyear弃用并将在未来版本中删除,请改用DatetimeIndex.isocalendar().week( GH 33595 )

  • DatetimeArray.week()DatetimeArray.weekofyear弃用并将在未来版本中删除,请改用DatetimeArray.isocalendar().week( GH 33595 )

  • DateOffset.__call__()已弃用并将在未来版本中删除,请改用( GH 34171 )offset + other

  • apply_index()已弃用并将在未来版本中删除。使用替代(GH 34580offset + other

  • DataFrame.tshift()Series.tshift()已弃用,并将在未来版本中删除,请使用DataFrame.shift()Series.shift()代替 ( GH 11631 )

  • Index不推荐使用浮动键对对象进行索引,并且IndexError将来会引发 。您可以手动转换为整数密钥(GH 34191)。

  • 关键字squeezeingroupby()已弃用,并将在未来版本中删除 ( GH 32380 )

  • 关键字tzinPeriod.to_timestamp()已弃用,并将在未来版本中删除;使用per.to_timestamp(...).tz_localize(tz)GH 34522

  • DatetimeIndex.to_perioddelta()已弃用并将在未来版本中删除。使用替代(GH 34853index - index.to_period(freq).to_timestamp()

  • DataFrame.melt()不推荐接受value_name已存在的 a ,并将在未来版本中删除(GH 34731

  • center函数中的关键字已DataFrame.expanding()弃用,并将在未来版本中删除(GH 20647

性能改进#

Bug修复

分类#

  • 传递一个 invalidfill_valueCategorical.take()引发 aValueError而不是TypeError( GH 33660 )

  • 在诸如or之类的操作中,将 aCategorical与整数类别以及包含缺失值的 float dtype 列结合起来,现在将生成 float 列,而不是对象 dtype 列 ( GH 33607 )concat()append()

  • merge()无法加入非唯一分类索引的错误( GH 28189

  • 将分类数据传递给Index构造函数时出现错误,并且dtype=object错误地返回 aCategoricalIndex而不是 object-dtype Index( GH 32167 )

  • 当任一元素缺失时,Categorical比较运算符__ne__会错误地计算结果的错误( GH 32276 )False

  • Categorical.fillna()现在接受参数(GH 32420Categorical other

  • 的 ReprCategorical没有区分intstr( GH 33676 )

类似日期时间#

  • int64传递除to之外的整数数据类型现在将引发而不是错误地使用(GH 32255np.array(period_index, dtype=...)TypeErrorint64

  • Series.to_timestamp()TypeError现在如果轴不是 a 则引发 a PeriodIndex。之前AttributeError提出了一个(GH 33327

  • Series.to_period()TypeError现在如果轴不是 a 则引发 a DatetimeIndex。之前AttributeError提出了一个(GH 33327

  • Period不再接受参数元组freqGH 34658

  • Timestamp从不明确的纪元时间构建Timestamp并再次调用构造函数更改了属性的错误Timestamp.value()GH 24329

  • DatetimeArray.searchsorted(), TimedeltaArray.searchsorted(),PeriodArray.searchsorted()无法识别非 pandas 标量并错误地提升ValueError而不是TypeError( GH 30950 )

  • Timestamp在夏令时从冬季切换到夏季之前使用 dateutil 时区构建小于 128 纳秒的错误Timestamp将导致时间不存在 ( GH 31043 )

  • 错误Period.to_timestamp()Period.start_time()微秒频率返回的时间戳比正确时间早一纳秒(GH 31475

  • Timestamp当缺少年、月或日时,会引发令人困惑的错误消息(GH 31200

  • 构造函数中的错误DatetimeIndex错误地接受bool-dtype 输入(GH 32668

  • DatetimeIndex.searchsorted()不接受listor作为其参数的错误SeriesGH 32762

  • PeriodIndex()传递Series字符串时引发的错误( GH 26109

  • Timestamp添加或减go dtype 时的算术np.ndarray错误(timedelta64GH 33296

  • DatetimeIndex.to_period()在不带参数调用时无法推断频率的错误( GH 33358

  • DatetimeIndex.tz_localize()在某些情况下错误地保留freq原件freq不再有效的错误( GH 30511

  • 在某些情况下DatetimeIndex.intersection()丢失和时区的错误( GH 33604freq

  • DatetimeIndex.get_indexer()对于混合日期时间目标会返回不正确输出的错误( GH 33741

  • DatetimeIndex某些类型的对象的加法和减法错误DateOffset错误地保留了无效freq属性(GH 33779

  • 在索引上DatetimeIndex设置属性可能会默默地更改查看相同数据的另一个索引上的属性的错误( GH 33552freqfreq

  • DataFrame.min()当对用空初始化的对象调用时,并没有DataFrame.max()返回一致的结果Series.min()Series.max()pd.to_datetime()

  • 错误DatetimeIndex.intersection()TimedeltaIndex.intersection()结果不具有正确的name属性(GH 33904

  • 错误地允许静默转换具有 dtype 的值( GHDatetimeArray.__setitem__() 33717 )TimedeltaArray.__setitem__()PeriodArray.__setitem__()int64

  • 在某些应该成功的情况下以及在某些应该提高的情况下TimedeltaIndexPeriod错误的提高中减go的错误(GH 33883TypeErrorIncompatibleFrequencyTypeError

  • 在构造具有非 ns 分辨率的只读 NumPy 数组时出现错误,该数组在时间戳范围内转换为对象 dtype,而不是强制转换为Seriesdtype ( GH 34843 )。Indexdatetime64[ns]

  • , , ,freq中的关键字不再允许元组,而是作为字符串传递(GH 34703Perioddate_range()period_range()pd.tseries.frequencies.to_offset()

  • 将包含标量 tz-aware 的DataFrame.append()a 附加到空结果导致对象列而不是dtype 时出现错误(GH 35038SeriesTimestampDataFramedatetime64[ns, tz]

  • OutOfBoundsDatetime当时间戳超出实现范围时发出改进的错误消息。 (GH 32967

  • AbstractHolidayCalendar.holidays()未定义规则时出现错误( GH 31415

  • 与类似 timedelta 的对象进行比较时Tick出现的比较错误( GH 34088 )TypeError

  • 乘以浮点时的Tick乘法错误( GH 34486TypeError

时间增量#

时区

  • 时区名称(例如)无法正确解析的to_datetime()错误(GH 33133infer_datetime_format=TrueUTC

数字#

转换

  • Series使用大端 dtype 构建 NumPy 数组时出现错误datetime64( GH 29684 )

  • Timedelta具有大纳秒关键字值的构造错误( GH 32402

  • 构造中的错误DataFrame,其中集合将被复制而不是提升(GH 32582

  • 构造DataFrame函数不再接受对象列表DataFrame。由于 NumPy 的更改,DataFrame对象现在始终被视为 2D 对象,因此对象列表DataFrame被视为 3D,并且构造函数不再接受DataFrame( GH 32289 )。

  • DataFrame使用列表启动框架并columns使用嵌套列表进行分配时出现错误MultiIndexGH 32173

  • 改进了创建新索引时列表构造无效的错误消息(GH 35190

字符串#

  • astype()将“字符串”数据类型数据转换为可为空的整数数据类型时,方法中存在错误( GH 32450)。

  • min修复了采用or maxof aStringArraySerieswithStringDtype类型时会出现的问题。 (GH 31746

  • Series.str.cat()当其他人有类型时返回NaN输出的错误IndexGH 33425

  • pandas.api.dtypes.is_string_dtype()不再错误地将分类系列识别为字符串。

间隔

  • IntervalArray设置值时错误地允许更改基础数据的错误( GH 32782 )

索引#

丢失的

  • 现在调用fillna()空对象Series可以正确返回浅复制对象。该行为现在与 一致IndexDataFrame且非空Series( GH 32543 )。

  • Series.replace()当参数的to_replace类型为 dict/list 并用于Series包含时,错误<NA>会引发TypeError.该方法现在通过<NA>在进行替换比较时忽略值来处理此问题(GH 32621

  • 使用可空布尔数据类型和(GH 33253)错误地返回any()所有或所有值all()<NA>FalseTrueskipna=False

  • 澄清了有关使用 进行插值的文档method=akima。该der参数必须是标量或NoneGH 33426

  • DataFrame.interpolate()现在使用正确的轴约定。以前沿列插值会导致沿索引插值,反之亦然。此外,使用方法padffill和进行插值与使用这些方法(GH 12918GH 29146)相同bfillbackfillDataFrame.fillna()

  • DataFrame.interpolate()当调用字符串类型的列名时,错误DataFrame会抛出 ValueError。该方法现在独立于列名的类型(GH 33956

  • NA现在可以使用格式规范传递到格式字符串。例如,"{:.1f}".format(pd.NA)之前会引发 a ValueError,但现在将返回字符串"<NA>"( GH 34740 )

  • 无效时Series.map()不加注的错误na_actionGH 32815

多重索引#

  • DataFrame.swaplevels()TypeError现在如果轴不是 a 则引发 a MultiIndex。之前AttributeError提出了一个(GH 31126

  • 与.Dataframe.loc()MultiIndex返回值的顺序与给定输入的顺序不同(GH 22797

In [79]: df = pd.DataFrame(np.arange(4),
   ....:                   index=[["a", "a", "b", "b"], [1, 2, 1, 2]])
   ....: 

# Rows are now ordered as the requested keys
In [80]: df.loc[(['b', 'a'], [2, 1]), :]
Out[80]: 
     0
b 2  3
  1  2
a 2  1
  1  0
In [81]: left = pd.MultiIndex.from_arrays([["b", "a"], [2, 1]])

In [82]: right = pd.MultiIndex.from_arrays([["a", "b", "c"], [1, 2, 3]])

# Common elements are now guaranteed to be ordered by the left side
In [83]: left.intersection(right, sort=False)
Out[83]: 
MultiIndex([('b', 2),
            ('a', 1)],
           )
  • 连接两个MultiIndex而不指定不同列的级别时出现错误。返回索引器参数被忽略。 (GH 34074

IO #

  • 将 aset作为names参数传递给pandas.read_csv(), pandas.read_table(), orpandas.read_fwf()将引发(GH 34946ValueError: Names should be an ordered collection.

  • display.precision为零时打印输出中的错误。 (GH 20359

  • read_json()当 json 包含大数字字符串时发生整数溢出的错误。 (GH 30320

  • read_csv()ValueError现在,当参数headerprefix两者都不是时,将提出 a None。 (GH 27394

  • 当S3 URI ( GH 28375 )时DataFrame.to_json()出现错误NotFoundErrorpath_or_buf

  • DataFrame.to_parquet()覆盖 pyarrow 默认值的 错误coerce_timestamps;遵循 pyarrow 的默认值允许使用version="2.0"GH 31652)写入纳秒时间戳。

  • 与关键字 ( GH 31396 )结合使用时read_csv()会引发错误TypeErrorsep=Nonecomment

  • 当从 Python 2 编写的固定格式读取 Python 3 中的 a 时,该错误HDFStore导致它设置为列int64的 dtype ( GH 31750datetime64DataFrame

  • read_sas()现在处理的日期和日期时间大于Timestamp.max将它们作为datetime.datetime对象返回的日期和日期时间(GH 20927

  • DataFrame.to_json()对象无法Timedelta正确序列化的错误date_format="iso"GH 28256

  • read_csv()ValueError当传入的列名在( GH 31251 )parse_dates中丢失时,将引发 aDataframe

  • read_excel()具有高代理项的 UTF-8 字符串会导致分段违规的错误 ( GH 23809 )

  • 错误read_csv()导致空文件上的文件描述符泄漏(GH 31488

  • read_csv()当标题行和数据行之间存在空行时,错误会导致段错误( GH 28071

  • 错误read_csv()是在权限问题上引发了误导性异常(GH 23784

  • 错误read_csv()是提出了一个IndexError时间header=None和两个额外的数据列

  • 从 Google Cloud Storage 读取文件时read_sas()出现错误( GH 33069AttributeError

  • 保存超出范围的日期时引发的DataFrame.to_sql()错误(GH 26761AttributeError

  • 错误read_excel()未能正确处理 OpenDocument 文本单元格中的多个嵌入空格。 (GH 32207

  • 将布尔值读入时read_json()会引发错误。 (GH 31464TypeErrorlistSeries

  • pandas.io.json.json_normalize()由 指定的位置record_path不指向数组的错误。 (GH 26284

  • pandas.read_hdf()加载不受支持的 HDF 文件时有更明确的错误消息 ( GH 9539 )

  • 读取 s3 或 http 文件路径时read_feather()引发错误( GH 29055 )ArrowIOError

  • 错误to_excel()无法处理列名称render并引发错误KeyErrorGH 34331

  • 当 SQL 语句包含字符且不存在参数时,某些 DB-API 驱动程序execute()会出现错误( GH 34211ProgrammingError%

  • StataReader()使用迭代器读取数据时导致分类变量具有不同数据类型的错误。 (GH 31544

  • HDFStore.keys()现在有一个可选include参数,允许检索所有本机 HDF5 表名称 ( GH 29916 )

  • TypeError引发的异常read_csv()read_table()显示为parser_f传递意外的关键字参数时(GH 25648

  • read_excel()ODS 文件中的错误删除了 0.0 值 ( GH 27222 )

  • 错误ujson.encode()是提出一个OverflowError数字大于sys.maxsizeGH 34395)的数字

  • 设置参数时HDFStore.append_to_multiple()出现错误( GH 11238ValueErrormin_itemsize

  • 当输入中未指定参数时,错误create_table()现在会引发错误(GH 28156columndata_columns

  • read_json()现在可以在设置lines和时从文件 url 读取行分隔的 json 文件。chunksize

  • DataFrame.to_sql()使用 MySQL读取包含条目的 DataFrame 时出现的错误-np.inf现在更加明确ValueError( GH 34431 )

  • 大写文件扩展名未由 read_* 函数解压缩的错误 ( GH 35164 )

  • 错误在于read_excel()提出了一个TypeError何时header=Noneindex_col给出为listGH 31783

  • 在( GH 34748 )read_excel()的标头中使用日期时间值的错误MultiIndex

  • read_excel()不再接受**kwds参数。这意味着传入关键字参数chunksize现在会引发 a TypeError(之前引发了 a NotImplementedError),而传入关键字参数encoding现在会引发 a TypeError( GH 34464 )

  • 错误DataFrame.to_records()是在时区感知datetime64列中错误地丢失了时区信息(GH 32535

绘图#

GroupBy/重新采样/滚动#

重塑#

稀疏#

扩展数组#

  • Series.value_counts()修复了 dtype为空输入时会引发的错误Int64GH 33317

  • 修复了将对象与非重叠列concat()连接时产生对象数据类型列而不是保留扩展数据类型时的错误( GH 27692GH 33027DataFrame

  • 修复了设置为( GH 33655 )时StringArray.isna()会返回FalseNA 值的错误pandas.options.mode.use_inf_as_naTrue

  • Series修复了EA 数据类型和索引构造中的错误,但没有数据或标量数据失败 ( GH 26469 )

  • Series.__repr__()修复了导致元素为多维数组的扩展类型崩溃的错误( GH 33770 )。

  • 修复了Series.update()会引发缺失值的 dtypes 的错误 ( ValueErrorGH 33980 )ExtensionArray

  • 修复了未实现的错误StringArray.memory_usage()GH 33963

  • 修复了DataFrameGroupBy()忽略min_count可空布尔数据类型上的聚合参数的错误(GH 34051

  • DataFrame修复了with的构造函数dtype='string'失败的错误(GH 27953GH 33623

  • DataFrame设置为标量扩展类型的列被视为对象类型而不是扩展类型的错误( GH 34832 )

  • 修复了错误IntegerArray.astype()以正确复制蒙版(GH 34931)。

其他

贡献者#

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

  • 3vts +

  • 布鲁克斯+

  • 艾比·波帕 +

  • 艾哈迈德·斯亚里夫·希达亚图拉 +

  • 亚当·W·巴加斯卡塔 +

  • 阿德里安·马斯特罗纳迪 +

  • 艾丹·蒙塔尔 +

  • 阿克巴尔·赛普特里扬 +

  • 阿科斯·弗顿 +

  • 亚历杭德罗·霍尔 +

  • 亚历克斯·霍尔+

  • 亚历克斯·伊特克斯 +

  • 亚历克斯·科科

  • 阿里·麦克马斯特 +

  • 阿尔瓦罗·阿莱曼 +

  • 艾米·格雷厄姆 +

  • 安德鲁·舍恩菲尔德 +

  • 安德鲁·舒曼斯基 +

  • 安德鲁·维特斯卡 +

  • 安吉拉·安布罗兹

  • 安贾利·辛格 +

  • 安娜·达格利斯

  • 安东尼·米尔伯恩 +

  • 安东尼·李 +

  • 阿里·索斯诺夫斯基 +

  • Akka迪普·阿迪卡里 +

  • 阿鲁尼姆·萨穆德拉 +

  • 阿什坎+

  • 阿什温·普拉卡什·纳尔瓦德 +

  • 阿什温·斯里纳斯 +

  • 努卡利亚敦 +

  • 阿亚潘+

  • 艾拉·汗 +

  • 巴特+

  • 巴特·布罗尔 +

  • 刘本杰明·贝尔 +

  • 本杰明·费舍尔 +

  • 巴拉特·拉古纳坦

  • 布拉德利骰子 +

  • 布伦丹·沙利文 +

  • 布莱恩·斯特兰德 +

  • 卡斯滕·范韦尔登+

  • 夏蒙·萨马 +

  • 克里斯·罗博 +

  • 克里斯蒂安·查瓦拉

  • 克里斯托弗·惠兰

  • 克里斯托·彼得罗普洛斯 +

  • 徐传柱

  • 关闭选择 +

  • 克莱门特·罗伯特 +

  • 库伦E+

  • 丹·巴森+

  • 丹尼尔·萨克斯顿

  • 达尼洛·奥尔塔 +

  • 达瓦·伊尔哈姆·哈鲁扎曼 +

  • 戴夫·赫希菲尔德

  • 戴夫·休斯

  • 大卫·鲁凯 +

  • 大卫S+

  • 迪普亚曼·达塔

  • 丹尼斯·巴克休斯 +

  • 德里克·麦卡蒙德 +

  • 德夫吉特·罗伊 +

  • 黛安·特劳特

  • 迪娜+

  • 多姆+

  • 德鲁·塞伯特 +

  • 埃德·阿巴蒂

  • 埃米利亚诺·乔丹 +

  • 埃尔凡·纳里曼 +

  • 埃里克·格罗斯曼 +

  • 埃里克·哈塞 +

  • 埃尔卡姆·乌亚尼克 +

  • 埃文·D+

  • 埃文·坎特 +

  • 李芳辰 +

  • 法尔汉·雷纳尔多 +

  • 法尔汉·雷纳尔多·胡塔巴拉特 +

  • 弗洛里安·杰特 +

  • 弗雷德·赖斯 +

  • 吉哈哈哈+

  • 加布里埃尔·莫雷拉 +

  • 加布里埃尔·图图伊 +

  • 加鲁·萨希德

  • 高拉夫·乔汉 +

  • 乔治·哈泽尔 +

  • 金盛+

  • 乔瓦尼·兰扎尼 +

  • 陈国登 +

  • 格雷厄姆·韦茨勒 +

  • 纪尧姆·勒梅特

  • 吉列姆·桑切斯 +

  • HH-MWB +

  • 哈沙瓦尔丹·巴奇纳

  • 浩斯威

  • 伊恩·伊夫斯

  • 伊克拉尔·阿加洛西·努雷扎 +

  • 欧夫·勒斯蒂格

  • 伊娃·拉金贾 +

  • 京东库巴

  • 杰克·格雷斯曼 +

  • 雅各布·奥斯汀+

  • 雅各布·德彭 +

  • 雅各布·孔雀 +

  • 杰克·泰 +

  • 杰克·范德普拉斯 +

  • 詹姆斯·科邦-克尔

  • 扬·切尔文卡 +

  • 扬·斯科达

  • 陈简+

  • 让-弗朗索瓦·辛克 +

  • 让德森·巴罗斯·坎迪多 +

  • 杰夫·雷巴克

  • 杰里德·多明格斯-特鲁希略 +

  • 杰里米·申德尔

  • 杰西·法纳姆

  • 嘉祥

  • 宋志焕 +

  • 若阿金·维加斯 +

  • 乔尔·诺斯曼

  • 约翰·博德利 +

  • 约翰·佩顿 +

  • 乔恩·蒂伦 +

  • 乔里斯·范登博什

  • 何塞·曼努埃尔·马蒂 +

  • 约瑟夫·古利安 +

  • 乔什·迪马斯基

  • 乔伊·巴拉 +

  • 若昂·韦加 +

  • 朱利安·德鲁伊特 +

  • 贾斯汀·埃塞特 +

  • 贾斯汀·郑

  • KD-开发实验室 +

  • 董凯琪

  • 卡西克·马图尔 +

  • 考沙尔·罗希特 +

  • 陈纪宗

  • 肯·曼考夫 +

  • 肯德尔·马塞

  • 肯尼·黄 +

  • 克坦+

  • 凯文·安德森 +

  • 凯文·鲍伊 +

  • 凯文·谢泼德

  • 基利安·利雷特 +

  • 西原功起 +

  • 克里希纳·奇武库拉 +

  • 克里希纳赛2020 +

  • 莱斯利+

  • 刘易斯·考尔斯 +

  • 陈琳达+

  • 吴林晓 +

  • 卢卡·德尔基亚罗·科斯塔比莱 +

  • 布劳恩斯+

  • 梅贝尔·维拉尔巴

  • 马布罗尔·艾哈迈德 +

  • 玛杜丽·帕拉尼韦鲁 +

  • 麦诗珍

  • 马尔科姆+

  • 马克·加西亚

  • 马可·戈雷利

  • 玛丽安·德内斯 +

  • 马丁·比耶德巴克·马德森 +

  • 马丁·杜兰特 +

  • 马丁·弗莱施曼 +

  • 马丁·琼斯 +

  • 马丁·温克尔

  • 玛蒂娜·奥费莱因 +

  • 马夫锌+

  • 玛丽亚·马里诺 +

  • 马修斯·卡多佐 +

  • 马西斯·费拉多斯 +

  • 马特·罗斯克

  • 马泰奥·费利西 +

  • 马泰奥·桑塔玛丽亚 +

  • 马修·罗斯克

  • 马蒂亚斯·布索尼耶

  • 陈麦克斯

  • 马克斯·哈尔福德 +

  • 玛雅克·比什特 +

  • 梅根丁字裤 +

  • 迈克尔·马里诺 +

  • 米格尔·马克斯 +

  • 迈克·库兹马

  • 穆罕默德·哈斯南·莫辛·拉詹 +

  • 穆罕默德·贾法尔·马什哈迪 +

  • 妈妈是最好的朋友

  • 莫妮卡+

  • 娜塔莉·詹恩

  • 内特·阿姆斯特朗 +

  • 纳撒尼尔+

  • 尼克·纽曼 +

  • 尼科·施洛默 +

  • 尼克拉斯·韦伯 +

  • 遗忘范式 +

  • 奥尔加·莱舍夫斯卡 +

  • 奥利维尔·卢格 +

  • 熊猫开发团队

  • 相似之处 +

  • 帕特里克+

  • 帕特里克·坎多 +

  • 保罗·利利 +

  • 保罗·桑德斯 +

  • 皮尔斯基泽 +

  • 佩德罗·拉罗伊 +

  • 佩德罗·雷伊斯

  • 彼得·布尔 +

  • 彼得·斯坦巴赫 +

  • 潘德一明 +

  • 菲尔·柯林 +

  • 皮埃尔-伊夫·布吉尼翁 +

  • 彼得·卡斯普日克 +

  • 彼得·涅瓦茨尼 +

  • 普拉卡·潘迪

  • 普拉尚特·阿南德 +

  • 普尼萨派 +

  • 阮光 +

  • 拉斐尔·詹姆士三世 +

  • 拉菲夫+

  • 赖莎DZ +

  • 拉克希特·奈杜 +

  • 拉姆·拉胡姆 +

  • 红色+

  • 里卡多·阿拉尼斯 +

  • 理查德·沙德拉克 +

  • 里克·德·科特

  • 罗伯特·德弗里斯

  • 罗宾到罗克塞尔 +

  • 罗杰·埃伦斯 +

  • 罗希斯295 +

  • 罗曼·尤尔恰克

  • 罗尔+

  • 鲁沙布·瓦萨尼

  • 瑞安

  • 瑞安·拿撒勒

  • SAI SRAVAN Medicherla +

  • 舒布·查特吉 +

  • 萨姆·科汉

  • 萨米拉-g-js +

  • 桑杜·乌尔苏 +

  • 桑阿贡+

  • 桑托什巴拉18 +

  • 萨西达尔·卡斯图里 +

  • 萨蒂什·库马尔·莫汉 +

  • 索尔·沙纳布鲁克

  • 斯科特·吉甘特 +

  • 塞巴斯蒂安·伯格 +

  • 塞巴斯蒂安·范雷尔

  • 谢尔盖·奇皮加 +

  • 谢尔盖+

  • 希尔帕苏甘 +

  • 西蒙·吉本斯

  • 西蒙·霍金斯

  • 西蒙·莱格纳 +

  • 索哈姆·蒂瓦里 +

  • 宋文浩+

  • 苏维克·曼达尔

  • 斯宾塞·克拉克

  • 史蒂芬·雷伯格 +

  • 史蒂芬·施密茨 +

  • 斯蒂恩·范霍伊

  • 史蒂芬·塔贾德

  • 苏丹奥拉兹巴耶夫 +

  • 苏马瑙·萨林

  • 苏拉吉H1 +

  • 苏瓦尤·阿里 +

  • 特尔吉·彼得森

  • 托马斯·J·范 +

  • 托马斯·李

  • 托马斯·史密斯 +

  • 蒂姆·斯瓦斯特

  • 托比亚斯·皮特斯 +

  • 汤姆+

  • 汤姆·奥格斯普格

  • 乌韦·科恩

  • 瓦伦丁·约文 +

  • 范达纳·艾耶 +

  • 文卡特什·达塔 +

  • 维杰·赛·穆蒂亚拉 +

  • 维卡斯·潘迪

  • 维普尔·拉伊 +

  • 维什瓦姆·潘迪亚 +

  • 弗拉基米尔·别尔库托夫 +

  • 威尔·艾德

  • 威尔·霍姆格伦

  • 威廉+

  • 威廉·艾德

  • 亚戈·冈萨雷斯 +

  • 小林洋介 +

  • 扎卡里·劳伦斯 +

  • 扎基·比尔法吉 +

  • 泽布·尼科尔斯 +

  • 阿里姆大师1

  • 施舍+

  • 安迪卡尤苏普 +

  • 安德烈斯麦克尼尔 +

  • 阿维纳什潘查姆 +

  • 贝纳贝尔+

  • 伯尼·格雷+

  • 比德万09 +

  • 布洛克+

  • 克里斯-B1

  • 克莱康特987 +

  • 丹1261 +

  • 大卫·科尔特斯 +

  • 大卫威尔士 +

  • 十进制+

  • 杜滕莫瑟 +

  • 迪莱克斯42 +

  • 埃尔蒙索米亚特 +

  • 埃皮齐戈尼 +

  • 菲耶特

  • 加布里埃尔vf1 +

  • gdex1+

  • 格菲扬

  • 大师基兰+

  • 维沙尔

  • 亚姆什温

  • 贾明-AWS-ospo +

  • 杰布罗克门德尔

  • 杰夫科贝特 +

  • 杰内克斯+

  • 内核

  • 松冈幸太 +

  • 凯尔克普勒 +

  • 莱德马本 +

  • 链接2xt +

  • manoj_koneni +

  • 玛丽德米特 +

  • 大师皮加+

  • 马克西姆.歌曲+

  • 毫克格拉斯德 +

  • 莫阿帐户 +

  • 姆普罗斯谢夫斯卡

  • 尼尔克

  • 恩雷贝纳

  • ossdev07 +

  • 排虎

  • 潘雅切克 +

  • 帕尔捷夫+

  • 帕特里克+

  • 佩德罗阿 +

  • 披萨贼+

  • 普罗斯特

  • 普凡豪+

  • 雷贝内斯

  • 丽贝卡·帕尔默

  • 拉沙德拉克 +

  • rjfs +

  • s-谢乐+

  • 鼠尾草+

  • 萨贡格普+

  • 塞勒姆3358 +

  • 沙龙30 +

  • smartsw开发者 +

  • 智能葡萄酒+

  • 特米恩+

  • 蒂姆亨德伍德 +

  • 托尔哈西亚尼帕尔 +

  • tonywu1999

  • 茨维卡斯

  • 电视3141

  • 文卡泰什达塔1993 +

  • 维维克拉普特 +

  • 威尔博迪奇 +

  • 威尔佩波 +

  • 扎+

  • 扎基因陀罗 +