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
文件。
增强功能#
可选地禁止重复标签#
Series
和 DataFrame
现在可以使用 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 19827 和 GH 35058),以及 encoding
(GH 13068 和 GH 23854) 和 compression
(GH 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_csv
和 read_table
的默认浮点精度#
对于 C 语言解析引擎,read_csv()
和 read_table()
方法以前默认使用一个解析器,该解析器在读取浮点数时,在精度上可能会出现最后一位的轻微不准确。选项 floating_precision="high"
始终可用以避免此问题。从本版本开始,默认设置是使用更精确的解析器,即让 floating_precision=None
对应高精度解析器,并新增选项 floating_precision="legacy"
以使用旧版解析器。默认使用更高精度解析器的更改对性能没有影响。( GH 17154)
浮点数据的新增可空数据类型#
我们添加了 Float32Dtype
/ Float64Dtype
和 FloatingArray
。这些是专门用于浮点数据的扩展数据类型,可以存储 pd.NA
缺失值指示器 (GH 32265, GH 34307)。
虽然默认的浮点数据类型已经支持使用 np.nan
表示缺失值,但这些新数据类型使用 pd.NA
(及其相应的行为)作为缺失值指示器,与已有的可空整型和布尔型数据类型保持一致。
np.nan
和 pd.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”数据类型区分)指定。此外,您也可以使用数据类型对象。
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 执行,并带有 engine
和 engine_kwargs
参数。要使用此功能,必须安装 Numba 作为可选依赖项。
其他增强功能#
为
Timestamp
、DatetimeIndex
、Period
、PeriodIndex
添加了day_of_week
属性(兼容别名dayofweek
)(GH 9605)为
Timestamp
、DatetimeIndex
、Period
、PeriodIndex
添加了day_of_year
属性(兼容别名dayofyear
)(GH 9605)添加了
set_flags()
用于在 Series 或 DataFrame 上设置表范围的标志 (GH 28394)DataFrame.applymap()
现在支持na_action
(GH 23803)io.sql.get_schema()
现在支持schema
关键字参数,该参数将在创建表语句中添加一个 schema (GH 28486)DataFrame.explode()
和Series.explode()
现在支持展开集合 (GH 35614)DataFrame.hist()
现在支持时间序列 (datetime) 数据 (GH 32590)Styler.set_table_styles()
现在允许直接设置行和列的样式,并且可以进行链式调用 (GH 35607)Rolling.mean()
和Rolling.sum()
使用 Kahan 求和法计算平均值以避免数值问题 (GH 10319, GH 11645, GH 13254, GH 32761, GH 36031)DatetimeIndex.searchsorted()
,TimedeltaIndex.searchsorted()
,PeriodIndex.searchsorted()
, 和Series.searchsorted()
对于 datetime 类型的数据,现在会尝试将字符串参数(列表式和标量)转换为匹配的 datetime 类型 (GH 36346)添加了
IntegerArray.prod()
、IntegerArray.min()
和IntegerArray.max()
方法 (GH 33790)在具有扩展类型的
DataFrame
上调用 NumPy ufunc 时,现在尽可能保留扩展类型 (GH 23743)在多个
DataFrame
对象上调用二进制输入 NumPy ufunc 时,现在会进行对齐,与二进制操作和Series
上的 ufuncs 的行为保持一致 (GH 23743)。此更改已在 pandas 1.2.1 中恢复,并且不对齐 DataFrame 的行为已被弃用,详见 1.2.1 版本说明。在可能的情况下,
RangeIndex.difference()
和RangeIndex.symmetric_difference()
将返回RangeIndex
而不是Int64Index
(GH 36564)DataFrame.to_parquet()
现在支持 Parquet 格式的列中的MultiIndex
(GH 34777)read_parquet()
获得了一个use_nullable_dtypes=True
选项,用于在可能的情况下使用pd.NA
作为缺失值指示器的可空数据类型作为结果 DataFrame(默认值为False
,仅适用于engine="pyarrow"
)(GH 31242)添加了
Rolling.sem()
和Expanding.sem()
来计算均值的标准误差 (GH 26476)Rolling.var()
和Rolling.std()
使用 Kahan 求和和 Welford 方法来避免数值问题 (GH 37051)DataFrame.corr()
和DataFrame.cov()
使用 Welford 方法来避免数值问题 (GH 37448)DataFrame.plot()
现在识别xlabel
和ylabel
参数,用于scatter
和hexbin
类型的图表 (GH 37001)DataFrame.to_parquet()
在未传入path
参数时,现在返回一个bytes
对象 (GH 37105)Rolling
现在支持固定窗口的closed
参数 (GH 34315)DatetimeIndex
和Series
具有datetime64
或datetime64tz
数据类型时,现在支持std
(GH 37436)Window
现在支持win_type
中的所有 Scipy 窗口类型,并支持灵活的关键字参数 (GH 34556)testing.assert_index_equal()
现在有一个check_order
参数,允许以不考虑顺序的方式检查索引 (GH 37478)read_csv()
支持压缩文件的内存映射 (GH 37621)为
DataFrame.groupby()
和DataFrame.resample()
函数min
,max
,first
和last
增加了min_count
关键字支持 (GH 37821, GH 37768)当给出无效的合并列定义时,改进了
DataFrame.merge()
的错误报告 (GH 16228)通过实现 Kahan 求和法,提高了
Rolling.skew()
、Rolling.kurt()
、Expanding.skew()
和Expanding.kurt()
的数值稳定性 (GH 6929)改进了使用
axis=1
对DataFrameGroupBy
的列进行子集操作的错误报告 (GH 37725)为
DataFrame.merge()
和DataFrame.join()
实现了cross
方法 (GH 5401)当调用
read_csv()
、read_sas()
和read_json()
时指定chunksize
/iterator
,它们可以作为上下文管理器在with
语句中使用 (GH 38225)增加了可用于 Excel 导出样式的命名颜色列表,现在支持所有 CSS4 颜色 (GH 38247)
显著的错误修复#
这些错误修复可能会导致显著的行为变化。
DataFrame 归约的一致性#
DataFrame.any()
和 DataFrame.all()
在 bool_only=True
的情况下,现在会逐列判断是否排除对象数据类型列,而不是检查所有对象数据类型列是否都可以被视为布尔值。
这避免了在列子集上应用归约可能导致更大的 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 (开发) |
5.0.1 |
X |
|
mypy (开发) |
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 |
其他 API 变更#
对于 Datetime 类的
Index
子类,Series.sort_values()
和Index.sort_values()
的降序排序现在是稳定的。这将影响 DataFrame 在多列上排序、使用产生重复值的键函数排序,或在使用Index.sort_values()
时请求排序索引时的排序顺序。在使用Series.value_counts()
时,缺失值的计数不再一定排在重复计数列表的最后。相反,其位置与原始 Series 中的位置相对应。在使用Index.sort_values()
对 Datetime 类的Index
子类进行排序时,NaT 值会忽略na_position
参数并被排序到开头。现在它们会遵循na_position
,默认值为last
,与其他的Index
子类相同 (GH 35992)将无效的
fill_value
传递给Categorical.take()
,DatetimeArray.take()
,TimedeltaArray.take()
, 或PeriodArray.take()
现在会引发TypeError
而不是ValueError
(GH 37733)将无效的
fill_value
传递给具有CategoricalDtype
的Series.shift()
现在会引发TypeError
而不是ValueError
(GH 37733)将无效值传递给
IntervalIndex.insert()
或CategoricalIndex.insert()
现在会引发TypeError
而不是ValueError
(GH 37733)尝试使用无效的
fill_value
对带有CategoricalIndex
的 Series 进行重新索引,现在会引发TypeError
而不是ValueError
(GH 37733)CategoricalIndex.append()
当索引包含非类别值时,现在将进行转换而不是引发TypeError
(GH 38098)
弃用#
在
MultiIndex.set_codes()
和MultiIndex.set_levels()
中,参数inplace
已弃用 (GH 35626)所有
Index
子类的copy()
方法的dtype
参数已弃用。请改用astype()
方法来更改数据类型 (GH 35853)MultiIndex.copy()
中的levels
和codes
参数已弃用。请改用set_levels()
和set_codes()
方法 (GH 36685)pandas.io.date_converters
中的日期解析函数parse_date_time()
、parse_date_fields()
、parse_all_fields()
和generic_parser()
已弃用,并将在未来版本中移除;请改用to_datetime()
(GH 35741)DataFrame.lookup()
已弃用,并将在未来版本中移除;请改用DataFrame.melt()
和DataFrame.loc()
(GH 35224)方法
Index.to_native_types()
已弃用。请改用.astype(str)
(GH 28867)弃用使用单个 datetime 字符串作为
df[string]
索引DataFrame
行的用法(考虑到它是索引行还是选择列的歧义),请改用df.loc[string]
(GH 36179)弃用
Index.is_all_dates()
(GH 27744)Series.str.replace()
的regex
默认值将在未来版本中从True
更改为False
。此外,当设置regex=True
时,单字符正则表达式将不
被视为字面字符串 (GH 24804)弃用
DataFrame
和Series
之间比较操作的自动对齐,请在执行frame == ser
之前先执行frame, ser = frame.align(ser, axis=1, copy=False)
(GH 28759)Rolling.count()
在未来版本中,当min_periods=None
时将默认为窗口大小 (GH 31302)在 DataFrames 上使用“outer” ufuncs 返回 4d ndarray 的功能现已弃用。请先转换为 ndarray (GH 23743)
弃用带有时区信息的
DatetimeIndex
与不带时区信息的datetime
对象进行切片索引,以匹配标量索引行为 (GH 36148)Index.ravel()
返回np.ndarray
已弃用,未来将返回同一索引的视图 (GH 19956)在
to_timedelta()
中,使用带“M”、“Y”或“y”的字符串表示单位已弃用 (GH 36666)Index
方法&
,|
, 和^
作为集合操作Index.intersection()
,Index.union()
, 和Index.symmetric_difference()
的行为已弃用,未来将作为逐点布尔操作,与Series
行为一致。请改用命名的集合方法 (GH 36758)Categorical.is_dtype_equal()
和CategoricalIndex.is_dtype_equal()
已弃用,将在未来版本中移除 (GH 37545)Series.slice_shift()
和DataFrame.slice_shift()
已弃用,请改用Series.shift()
或DataFrame.shift()
(GH 37601)对无序的
DatetimeIndex
对象进行键不在索引中的部分切片已弃用,并将在未来版本中移除 (GH 18531)PeriodIndex.astype()
中的how
关键字已弃用,并将在未来版本中移除,请改用index.to_timestamp(how=how)
(GH 37982)对于
Index
子类(除了DatetimeIndex
,TimedeltaIndex
, 和PeriodIndex
),Index.asi8()
已弃用 (GH 37877)Categorical.remove_unused_categories()
的inplace
参数已弃用,并将在未来版本中移除 (GH 37643)DataFrame.info()
的null_counts
参数已弃用,并由show_counts
取代。它将在未来版本中移除 (GH 37999)
在不对齐的 DataFrames 上调用 NumPy ufuncs
在不对齐的 DataFrames 上调用 NumPy ufuncs 的行为在 pandas 1.2.0 中发生了变化(在调用 ufunc 之前对输入进行对齐),但此更改在 pandas 1.2.1 中已恢复。不对齐的行为现在已被弃用,更多详情请参阅 1.2.1 版本说明。
性能改进#
从具有许多字符串元素的数组创建数据类型为
str
或StringDtype
的 DataFrame 或 Series 时,性能得到改进 (GH 36304, GH 36317, GH 36325, GH 36432, GH 37371)使用
numba
引擎的DataFrameGroupBy.agg()
和SeriesGroupBy.agg()
性能提升 (GH 35759)从大型字典创建
Series.map()
时,性能得到改进 (GH 34717)使用
numba
引擎的DataFrameGroupBy.transform()
和SeriesGroupBy.transform()
性能提升 (GH 36240)Styler
的 uuid 方法经过修改,可在网页上传输数据时压缩数据,同时保持较低的表格冲突概率 (GH 36345)当
float
dtype
列的时间单位非纳秒时,to_datetime()
的性能有所提升 (GH 20445)设置
IntervalArray
值时性能改进 (GH 36310)内部索引方法
_shallow_copy()
现在使新索引和原始索引共享缓存属性,从而避免再次创建它们(如果已在其中一个上创建)。这可以加速依赖于创建现有索引副本的操作 (GH 36840)RollingGroupby.count()
性能改进 (GH 35625)固定窗口的
Rolling.min()
和Rolling.max()
性能略有下降 (GH 36567)在 Python 3.8+ 中使用
protocol=5
时,DataFrame.to_pickle()
的内存峰值使用量减少 (GH 34244)当对象有许多索引标签时,
dir
调用更快,例如dir(ser)
(GH 37450)ExpandingGroupby
性能改进 (GH 37064)Series.astype()
和DataFrame.astype()
对于Categorical
的性能有所提升 (GH 8628)DataFrame.groupby()
对于float
数据类型的性能有所改进 (GH 28303),底层哈希函数的更改可能导致基于浮点数的索引排序顺序在平局时发生变化(例如Index.value_counts()
)对于元素数量超过 1e6 的输入,
pd.isin()
性能提升 (GH 36611)使用类似列表的索引器时,
DataFrame.__setitem__()
的性能得到改进 (GH 37954)当指定
chunksize
时,read_json()
现在避免将整个文件读入内存 (GH 34548)
错误修复#
类别型#
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
类别时存在的错误,错误地丢弃了时区信息,而不是转换为对象数据类型 (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
对象,或者带有 tz-awareDatetimeIndex
的 naiveTimestamp
(GH 35690)DatetimeIndex.slice_locs()
中存在一个错误,它不接受datetime.date
对象 (GH 34077)DatetimeIndex.searchsorted()
、TimedeltaIndex.searchsorted()
、PeriodIndex.searchsorted()
和Series.searchsorted()
在处理datetime64
、timedelta64
或Period
数据类型时,NaT
值的放置与 NumPy 不一致 (GH 36176, GH 36254)DatetimeArray
、TimedeltaArray
和PeriodArray
方法__setitem__
中存在不一致性,它会将字符串数组转换为 datetime 标量,但不转换标量字符串 (GH 36261)DatetimeArray.take()
中存在的错误,错误地允许fill_value
具有不匹配的时区 (GH 37356)DatetimeIndex.shift
中的一个错误,当移动空索引时会错误地引发异常 (GH 14811)Timestamp
和DatetimeIndex
在比较带时区和不带时区对象时,现在遵循标准库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()
在空索引或序列上返回timedelta64
数据类型时,返回NaT
而不是Timedelta(0)
的错误 (GH 31751)DatetimeArray.shift()
中存在的错误,错误地允许fill_value
具有不匹配的时区 (GH 37299)添加具有非零
offset
的BusinessDay
到非标量其他对象时出现错误 (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 34621 和 GH 17053)
Timedelta#
在
TimedeltaIndex
、Series
和DataFrame
的整除操作中存在缺陷,当使用timedelta64
dtypes 且分母中包含NaT
时 (GH 35529)在
Timedelta
和to_datetime()
中解析 ISO 8601 持续时间时存在缺陷 (GH 29773, GH 36204)在
to_timedelta()
中存在缺陷,当使用只读数组时错误地引发异常 (GH 34857)在
Timedelta
中存在缺陷,当字符串输入精度高于纳秒时,会错误地截断到字符串输入的亚秒部分 (GH 36738)
时区#
在
date_range()
中存在缺陷,对于ambiguous=False
的有效输入会引发AmbiguousTimeError
(GH 35297)在
Timestamp.replace()
中存在缺陷,导致丢失折叠信息 (GH 37610)
数值#
在
to_numeric()
中存在缺陷,导致浮点精度不正确 (GH 31364)在
DataFrame.any()
中存在缺陷,当axis=1
和bool_only=True
时,会忽略bool_only
关键字 (GH 32432)在
Series.equals()
中存在缺陷,当 NumPy 数组与标量进行比较时会引发ValueError
(GH 35267)在
Series
中存在缺陷,当两个 Series 各自拥有带有不同时区的DatetimeIndex
时,执行算术运算会导致这些索引被错误更改 (GH 33671)在
pandas.testing
模块函数中存在缺陷,当与check_exact=False
用于复数数值类型时 (GH 28235)在
DataFrame.__rmatmul__()
错误处理中存在缺陷,报告了转置的形状 (GH 21581)在
Series
灵活算术方法中存在缺陷,当与list
、tuple
或np.ndarray
进行操作时,结果会有一个不正确的名称 (GH 36760)在
IntegerArray
与timedelta
和np.timedelta64
对象进行乘法运算时存在缺陷 (GH 36870)在
MultiIndex
与元组进行比较时存在缺陷,错误地将元组视为类数组 (GH 21517)在
DataFrame.diff()
中存在缺陷,当datetime64
dtypes 包含NaT
值时,未能正确填充NaT
结果 (GH 32441)在
IntervalArray
与Series
进行比较时存在缺陷,未返回 Series (GH 36908)在
DataFrame
中存在缺陷,允许对类数组列表进行算术运算,结果未定义。行为已更改为引发ValueError
(GH 36702)在
DataFrame.std()
中存在缺陷,当使用timedelta64
dtype 和skipna=False
时 (GH 37392)在
DataFrame.min()
和DataFrame.max()
中存在缺陷,当使用datetime64
dtype 和skipna=False
时 (GH 36907)在
DataFrame.idxmax()
和DataFrame.idxmin()
中存在缺陷,当使用混合 dtypes 时错误地引发TypeError
(GH 38195)
转换#
在
DataFrame.to_dict()
中存在缺陷,当orient='records'
时,现在会为日期时间类型列返回 Python 原生日期时间对象 (GH 21256)在
Series.astype()
中存在缺陷,当存在pd.NA
值时,从string
到float
的转换会引发异常 (GH 37626)
字符串#
在
Series.to_string()
、DataFrame.to_string()
和DataFrame.to_latex()
中存在缺陷,当index=False
时会添加一个前导空格 (GH 24980)在
to_numeric()
中存在缺陷,当尝试转换仅包含数字字符串和NA
的字符串 dtype Series 时会引发TypeError
(GH 37262)
区间#
在
DataFrame.replace()
和Series.replace()
中存在缺陷,导致Interval
dtypes 会被转换为 object dtypes (GH 34871)在
IntervalIndex.take()
中存在缺陷,当使用负索引和fill_value=None
时 (GH 37330)在
IntervalIndex.putmask()
中存在缺陷,当使用日期时间类型 dtype 时,会错误地转换为 object dtype (GH 37968)在
IntervalArray.astype()
中存在缺陷,当使用CategoricalDtype
对象时,会错误地丢弃 dtype 信息 (GH 37984)
索引#
在
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()
中存在缺陷,当输入为具有 Categorical dtype 层中存在缺失值的MultiIndex
时,会错误地引发ValueError
(GH 24206)在对日期时间类型值使用布尔掩码进行索引时存在缺陷,有时会返回视图而非副本 (GH 36210)
在
DataFrame.__getitem__()
和DataFrame.loc.__getitem__()
中存在缺陷,当列是IntervalIndex
且索引器为数字时 (GH 26490)在
Series.loc.__getitem__()
中存在缺陷,当使用非唯一MultiIndex
和空列表索引器时 (GH 13691)在
Series.__getitem__()
中存在缺陷,当使用无符号整数数组作为索引器时,会给出不正确的结果或导致段错误,而不是引发KeyError
(GH 37218)在
Index.where()
中存在缺陷,会错误地将数值转换为字符串 (GH 37591)在
DataFrame.loc()
中存在缺陷,当索引器是带有负步长的切片时,会返回空结果 (GH 38071)在
Series.loc()
和DataFrame.loc()
中存在缺陷,当索引为object
dtype 且给定数字标签在索引中时会引发异常 (GH 26491)在
DataFrame.loc()
中存在缺陷,当loc
应用于MultiIndex
的单个层时,返回了请求的键以及缺失值 (GH 27104)在对具有
CategoricalIndex
的Series
或DataFrame
使用包含 NA 值的类列表索引器进行索引时存在缺陷 (GH 37722)在
DataFrame.loc.__setitem__()
中存在缺陷,当扩展一个空的具有混合 dtypes 的DataFrame
时 (GH 37932)在
DataFrame.xs()
中存在缺陷,忽略了列的droplevel=False
参数 (GH 19056)在
DataFrame.reindex()
中存在缺陷,当空 DataFrame 的tolerance
不为None
或method="nearest"
时,会错误地引发IndexingError
(GH 27315)在对具有
CategoricalIndex
的Series
或DataFrame
使用类列表索引器进行索引时存在缺陷,索引器中包含索引类别中存在但索引本身中不存在的元素时,未能引发KeyError
(GH 37901)在
DataFrame.iloc()
和Series.iloc()
中存在缺陷,在__setitem__
中对齐对象时 (GH 22046)在
MultiIndex.drop()
中存在缺陷,如果标签部分存在则不引发异常 (GH 37820)在
DataFrame.loc()
中存在缺陷,当给定缺失组合且剩余层为slice(None)
时,未引发KeyError
(GH 19556)在
DataFrame.loc()
中存在缺陷,当给定非整数切片以从MultiIndex
中选择值时,会引发TypeError
(GH 25165, GH 24263)在
Series.at()
中存在缺陷,当索引是单层MultiIndex
时,会返回包含一个元素的 Series 而非标量 (GH 38053)在
DataFrame.loc()
中存在缺陷,当索引器与要筛选的MultiIndex
顺序不同时,会以错误顺序返回和分配元素 (GH 31330, GH 34603)在
DataFrame.loc()
和DataFrame.__getitem__()
中存在缺陷,当列是仅有一层的MultiIndex
时会引发KeyError
(GH 29749)在
Series.__getitem__()
和DataFrame.__getitem__()
中存在缺陷,当对IntervalIndex
使用缺失键时,会引发没有缺失键的空白KeyError
(GH 27365)在对具有
CategoricalIndex
的DataFrame
或Series
设置新标签时存在缺陷,当新标签不在索引的类别中时会错误地引发TypeError
(GH 38098)在
Series.loc()
和Series.iloc()
中存在缺陷,当将等长的类列表np.array
、list
或tuple
插入到object
Series 中时会引发ValueError
(GH 37748, GH 37486)在
Series.loc()
和Series.iloc()
中存在缺陷,会用类列表ExtensionArray
的值设置object
Series 的所有值,而不是插入它 (GH 38271)
缺失值#
修复了
SeriesGroupBy.transform()
中的缺陷,现在能正确处理dropna=False
的缺失值 (GH 35014)在
Series.nunique()
中存在缺陷,当dropna=True
且同时存在NA
和None
缺失值时,会返回不正确的结果 (GH 37566)在
Series.interpolate()
中存在缺陷,当使用pad
和backfill
方法时,kwarglimit_area
和limit_direction
没有效果 (GH 31048)
MultiIndex#
在
DataFrame.xs()
中存在缺陷,当与IndexSlice
一起使用时,会引发带消息"Expected label or tuple of labels"
的TypeError
(GH 35301)在
DataFrame.reset_index()
中存在缺陷,当索引中存在NaT
值时,会引发带消息"cannot convert float NaN to integer"
的ValueError
(GH 36541)在
DataFrame.combine_first()
中存在缺陷,当与包含字符串和NaN
值的MultiIndex
一起使用时会引发TypeError
(GH 36562)在
MultiIndex.drop()
中存在缺陷,当给定不存在的键作为输入时,会丢弃NaN
值 (GH 18853)在
MultiIndex.drop()
中存在缺陷,当索引有重复项且未排序时,会丢弃比预期更多的值 (GH 33494)
I/O#
read_sas()
在失败时不再泄露资源 (GH 35566)在
DataFrame.to_csv()
和Series.to_csv()
中存在缺陷,当与包含b
的mode
结合文件名调用时,会引发ValueError
(GH 35058)在
read_csv()
中存在缺陷,当float_precision='round_trip'
时,未处理decimal
和thousands
参数 (GH 35365)to_pickle()
和read_pickle()
会关闭用户提供的文件对象 (GH 35679)to_csv()
总是将'gzip'
的压缩参数传递给gzip.GzipFile
(GH 28103)to_csv()
不支持对没有文件名的二进制文件对象进行 zip 压缩 (GH 35058)to_csv()
和read_csv()
未遵循内部转换为文件类对象的 path-like 对象的compression
和encoding
(GH 35677, GH 26124, GH 32392)DataFrame.to_pickle()
、Series.to_pickle()
和read_pickle()
不支持对文件对象进行压缩 (GH 26237, GH 29054, GH 29570)在
LongTableBuilder.middle_separator()
中存在缺陷,导致 LaTeX 文档的表格列表中复制 LaTeX longtable 条目 (GH 34360)在
read_csv()
中存在缺陷,当engine='python'
时,如果第一行中存在多个项目且第一个元素以 BOM 开头,则会截断数据 (GH 36343)从
read_gbq()
中移除了private_key
和verbose
,因为它们在pandas-gbq
中不再受支持 (GH 34654, GH 30200)将 pytables 的最低版本提升到 3.5.1,以避免
read_hdf()
中出现ValueError
(GH 24839)在
read_table()
和read_csv()
中存在缺陷,当delim_whitespace=True
且sep=default
时 (GH 36583)在
DataFrame.to_json()
和Series.to_json()
中存在缺陷,当与lines=True
和orient='records'
一起使用时,记录的最后一行未附加“换行符” (GH 36888)在
read_parquet()
中存在缺陷,当使用固定偏移时区时,时区的字符串表示未被识别 (GH 35997, GH 36004)在
DataFrame.to_html()
、DataFrame.to_string()
和DataFrame.to_latex()
中存在缺陷,当float_format
也被指定时,会忽略na_rep
参数 (GH 9046, GH 13828)在复数输出渲染中存在缺陷,显示了过多尾随零 (GH 36799)
在
HDFStore
中存在缺陷,当使用固定 HDF5 存储导出具有datetime64[ns, tz]
dtypes 的空 DataFrame 时,会引发TypeError
(GH 20594)在
HDFStore
中存在缺陷,当使用固定 HDF5 存储导出具有datetime64[ns, tz]
dtypes 的 Series 时,会丢弃时区信息 (GH 20594)read_csv()
会关闭用户提供的二进制文件句柄,当engine="c"
且请求了encoding
时 (GH 36980)在
DataFrame.to_hdf()
中存在缺陷,当dropna=True
时,未丢弃缺失行 (GH 35719)在
read_html()
中存在缺陷,当为io
参数提供pathlib.Path
参数时会引发TypeError
(GH 37705)DataFrame.to_excel()
、Series.to_excel()
、DataFrame.to_markdown()
和Series.to_markdown()
现在支持写入 fsspec URL,例如 S3 和 Google Cloud Storage (GH 33987)在
read_fwf()
中存在缺陷,当skip_blank_lines=True
时,未能跳过空行 (GH 37758)使用
read_json()
且dtype=False
解析缺失值时,解析为NaN
而非None
(GH 28501)read_fwf()
在compression=None
时推断压缩,这与其他read_*
函数不一致 (GH 37909)DataFrame.to_html()
在ExtensionDtype
列中忽略了formatters
参数 (GH 36525)将 xarray 的最低版本提升到 0.12.3,以避免引用已移除的
Panel
类 (GH 27101, GH 37983)DataFrame.to_csv()
会重新打开同时也实现了os.PathLike
的文件类句柄 (GH 38125)在切片
pyarrow.Table
与缺失值转换为 DataFrame 时存在缺陷 (GH 38525)在
read_sql_table()
中存在缺陷,当列名包含百分号时会引发sqlalchemy.exc.OperationalError
(GH 37517)
Period#
在
DataFrame.replace()
和Series.replace()
中存在缺陷,导致Period
dtypes 会被转换为 object dtypes (GH 34871)
绘图#
在
DataFrame.plot()
中存在缺陷,当subplots=True
时,即使 x 轴不是不规则时间序列,也会旋转 xticklabels (GH 29460)在
DataFrame.plot()
中存在缺陷,style
关键字中的标记字母有时会导致ValueError
(GH 21003)在
DataFrame.plot.bar()
和Series.plot.bar()
中存在缺陷,刻度位置是按值顺序分配的,而不是使用实际值进行数字排序或对字符串进行智能排序 (GH 26186, GH 11465)。此修复已在 pandas 1.2.1 中还原,请参见 1.2.1 新特性 (2021年1月20日)双轴会丢失其刻度标签,而这只应发生在“外部”共享轴的除最后一行或列外的所有轴上 (GH 33819)
在
Series.plot()
和DataFrame.plot()
中存在缺陷,当 Series 或 DataFrame 由具有固定频率的TimedeltaIndex
索引且 x 轴下限大于上限时,会引发ValueError
(GH 37454)在
DataFrameGroupBy.boxplot()
中存在缺陷,当subplots=False
时会引发KeyError
(GH 16748)在
Series.plot()
和DataFrame.plot()
中存在缺陷,当未传递sharey
参数时,会覆盖 matplotlib 的共享 y 轴行为 (GH 37942)在
DataFrame.plot()
中存在缺陷,当使用ExtensionDtype
列时会引发TypeError
(GH 32073)
Styler#
在
Styler.render()
中存在缺陷,由于rowspan
属性的格式错误导致 HTML 生成不正确,现在它与 w3 语法匹配 (GH 38234)
分组/重采样/滚动#
在
DataFrameGroupBy.count()
和SeriesGroupBy.sum()
中存在缺陷,当对多个Categoricals
进行分组时,会为缺失类别返回NaN
。现在返回0
(GH 35028)在
DataFrameGroupBy.apply()
中存在缺陷,如果分组轴有重复条目,有时会引发错误的ValueError
(GH 16646)在
DataFrame.resample()
中存在缺陷,当从"D"
重采样到"24H"
且跨越夏令时 (DST) 过渡时,会引发ValueError
(GH 35219)在结合方法
DataFrame.groupby()
与DataFrame.resample()
和DataFrame.interpolate()
时存在缺陷,引发了TypeError
(GH 35325)在
DataFrameGroupBy.apply()
中存在缺陷,如果另一个 groupby 方法在.apply
之前被调用,非干扰分组列会从输出列中被丢弃 (GH 34656)在
DataFrameGroupBy
上子集列 (例如df.groupby('a')[['b']])
) 时存在缺陷,会将其属性axis
、dropna
、group_keys
、level
、mutated
、sort
和squeeze
重置为默认值 (GH 9959)在
DataFrameGroupBy.tshift()
中存在缺陷,当无法为组索引推断频率时,未能引发ValueError
(GH 35937)在
DataFrame.groupby()
中存在缺陷,对于any
、all
、bfill
、ffill
、shift
操作,并非总是能维护列索引名称 (GH 29764)在
DataFrameGroupBy.apply()
中存在缺陷,当dropna=False
时,会引发np.nan
组的错误 (GH 35889)在
Rolling.sum()
中存在缺陷,当 dtypes 混合了浮点数和整数且axis=1
时,会返回错误的值 (GH 20649, GH 35596)在
Rolling.count()
中存在缺陷,当使用FixedForwardWindowIndexer
作为窗口、min_periods=0
且窗口中只有缺失值时,会返回np.nan
(GH 35579)在
Rolling
中存在缺陷,当使用PeriodIndex
时会产生不正确的窗口大小 (GH 34225)在
DataFrameGroupBy.ffill()
和DataFrameGroupBy.bfill()
中存在缺陷,当dropna=True
时,NaN
组会返回填充值而不是NaN
(GH 34725)在
RollingGroupby.count()
中存在缺陷,当指定closed
参数时会引发ValueError
(GH 35869)在
DataFrameGroupBy.rolling()
中存在缺陷,当使用部分居中窗口时会返回错误的值 (GH 36040)在
DataFrameGroupBy.rolling()
中存在缺陷,当使用包含NaN
的时区感知窗口时会返回错误的值。现在会引发ValueError
,因为窗口不再是单调的 (GH 34617)在
Rolling.__iter__()
中存在缺陷,当min_periods
大于window
时,未能引发ValueError
(GH 37156)使用
Rolling.var()
而非Rolling.std()
可避免Rolling.corr()
在Rolling.var()
仍在浮点精度范围内而Rolling.std()
不在时出现的数值问题 (GH 31286)在
DataFrameGroupBy.quantile()
和Resampler.quantile()
中存在缺陷,当值为Timedelta
类型时会引发TypeError
(GH 29485)在
Rolling.median()
和Rolling.quantile()
中存在缺陷,当BaseIndexer
子类的窗口的起始点或结束点是非单调的时,会返回错误的值 (GH 37153)在
DataFrame.groupby()
中存在缺陷,当对单列进行分组时,会从结果中丢弃nan
组,即使dropna=False
(GH 35646, GH 35542)在
DataFrameGroupBy.head()
、DataFrameGroupBy.tail()
、SeriesGroupBy.head()
和SeriesGroupBy.tail()
中存在缺陷,当与axis=1
一起使用时会引发异常 (GH 9772)在
DataFrameGroupBy.transform()
中存在缺陷,当与axis=1
和转换核(例如“shift”)一起使用时会引发异常 (GH 36308)在
DataFrameGroupBy.resample()
中存在缺陷,使用.agg
与 sum 产生的结果与直接调用.sum
不同 (GH 33548)在
DataFrameGroupBy.apply()
中存在缺陷,当返回与原始帧相同的轴时,会在nan
组上丢弃值 (GH 38227)在
DataFrameGroupBy.quantile()
中存在一个错误,即在按列分组时无法处理类似数组的q
(GH 33795)在
DataFrameGroupBy.rank()
中存在一个错误,即当使用datetime64tz
或 period dtype 时,结果错误地转换为这些 dtype,而不是返回float64
dtype (GH 38187)
重塑#
在
DataFrame.crosstab()
中存在一个错误,即在输入具有重复行名、重复列名或行标签和列标签之间存在重复名称时返回不正确的结果 (GH 22529)在
DataFrame.pivot_table()
中存在一个错误,即当以Categorical
进行透视时,aggfunc='count'
或aggfunc='sum'
对于缺失类别返回NaN
。现在返回0
(GH 31422)在
concat()
和DataFrame
构造函数中存在一个错误,即在某些情况下未保留输入索引名称 (GH 13475)在函数
crosstab()
中存在一个错误,即在使用多列并设置margins=True
和normalize=True
时 (GH 35144)在
DataFrame.stack()
中存在一个错误,即空的 DataFrame.stack 会引发错误 (GH 36113)。现在返回一个带空 MultiIndex 的空 Series。在
Series.unstack()
中存在一个错误。现在,具有单级索引的 Series 在尝试 unstack 时会引发ValueError
(GH 36113)在
DataFrame.agg()
中存在一个错误,即当DataFrame.columns==['Name']
时,使用func={'name':<FUNC>}
会错误地引发TypeError
(GH 36212)在
Series.transform()
中存在一个错误,即当参数func
为字典时,会给出不正确的结果或引发错误 (GH 35811)在
DataFrame.pivot()
中存在一个错误,即当行和列都具有多级索引时,未保留列的MultiIndex
级别名称 (GH 36360)在
DataFrame.pivot()
中存在一个错误,即当传递columns
但未传递values
时,会修改index
参数 (GH 37635)在
DataFrame.join()
中存在一个错误,即返回的MultiIndex
的级别顺序不确定 (GH 36910)在
DataFrame.combine_first()
中存在一个错误,即当 dtype 为string
且MultiIndex
的一个级别仅包含NA
时,会导致错误的对齐 (GH 37591)修复了
merge()
在合并DatetimeIndex
与空 DataFrame 时的回归问题 (GH 36895)在
DataFrame.apply()
中存在一个错误,即当func
返回类型为dict
时,未设置返回值的索引 (GH 37544)在
DataFrame.merge()
和pandas.merge()
中存在一个错误,即当how=right
和how=left
时,返回结果的顺序不一致 (GH 35382)在
merge_ordered()
中存在一个错误,即无法处理列表式的left_by
或right_by
(GH 35269)在
merge_ordered()
中存在一个错误,即当left_by
或right_by
的长度等于left
或right
的行数时,返回错误的连接结果 (GH 38166)在
merge_ordered()
中存在一个错误,即当left_by
或right_by
中的元素不存在于left
列或right
列中时,未引发错误 (GH 38167)在
DataFrame.drop_duplicates()
中存在一个错误,即未验证ignore_index
关键字的布尔 dtype (GH 38274)
扩展数组#
修复了一个错误,即通过字典实例化将
DataFrame
列设置为标量扩展类型时,被认为是对象类型而不是扩展类型 (GH 35965)修复了一个错误,即
astype()
在 dtype 相同且copy=False
时会返回新对象 (GH 28488)修复了将具有多个输出的 NumPy ufunc 应用于
IntegerArray
时返回None
的错误 (GH 36913)修复了
PeriodArray
的__init__
签名与DatetimeArray
和TimedeltaArray
的不一致性 (GH 37289)BooleanArray
,Categorical
,DatetimeArray
,FloatingArray
,IntegerArray
,PeriodArray
,TimedeltaArray
和PandasArray
的归约方法现在仅支持关键字参数 (GH 37541)修复了一个错误,即如果对包含 NaN 值的
ExtensionArray
进行成员资格检查,会错误地引发TypeError
(GH 37867)
其他#
在
DataFrame.replace()
和Series.replace()
中存在一个错误,即在传递无效参数组合时,会错误地引发AssertionError
而不是ValueError
(GH 36045)在
DataFrame.replace()
和Series.replace()
中存在一个错误,即对数值和字符串to_replace
的处理 (GH 34789)修复了
Series.abs()
以及对 Series 和 DataFrames 调用 ufuncs 时的元数据传播问题 (GH 28283)在
DataFrame.replace()
和Series.replace()
中存在一个错误,即错误地将PeriodDtype
转换为对象 dtype (GH 34871)修复了元数据传播中的一个错误,即当列名与元数据名称重叠时,错误地将 DataFrame 列复制为元数据 (GH 37037)
修复了
Series.dt
,Series.str
访问器,DataFrame.duplicated
,DataFrame.stack
,DataFrame.unstack
,DataFrame.pivot
,DataFrame.append
,DataFrame.diff
,DataFrame.applymap
和DataFrame.update
方法中的元数据传播问题 (GH 28283, GH 37381)修复了使用
DataFrame.__getitem__
选择列时的元数据传播问题 (GH 28283)在
Index.intersection()
中存在一个错误,即非Index
无法正确设置返回的Index
的名称 (GH 38111)在
RangeIndex.intersection()
中存在一个错误,即在某些极端情况下无法正确设置返回的Index
的名称 (GH 38197)在
Index.difference()
中存在一个错误,即在某些极端情况下无法正确设置返回的Index
的名称 (GH 38268)在
Index.union()
中存在一个错误,即行为因操作数是Index
还是其他列表式对象而异 (GH 36384)在
Index.intersection()
中存在一个错误,即非匹配数值 dtype 转换为object
dtype 而非最小公共 dtype (GH 38122)在
IntervalIndex.union()
中存在一个错误,即当为空时返回错误类型的Index
(GH 38282)现在,将具有 2 个或更多维度的数组传递给
Series
构造函数会引发更具体的ValueError
,而不是普通的Exception
(GH 35744)在
dir
中存在一个错误,即dir(obj)
不会显示 pandas 对象实例上定义的属性 (GH 37173)在
Index.drop()
中存在一个错误,即当索引包含重复项时引发InvalidIndexError
(GH 38051)在
RangeIndex.difference()
中存在一个错误,即在某些情况下返回Int64Index
而不是应返回RangeIndex
(GH 38028)修复了
assert_series_equal()
在比较日期时间类数组与等效的非扩展 dtype 数组时存在的错误 (GH 37609)在
is_bool_dtype()
中存在一个错误,即在传递有效字符串(如"boolean"
)时会引发错误 (GH 38386)修复了逻辑运算符的回归问题,即当
DataFrame
的列是具有未使用类别的CategoricalIndex
时引发ValueError
(GH 38367)
贡献者#
共有 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 +