2.3.0 中的新特性 (2025 年 6 月 4 日)#
这些是 pandas 2.3.0 中的变更。有关包括其他 pandas 版本在内的完整更新日志,请参阅发布说明。
功能增强#
其他功能增强#
__array__方法中copy关键字的语义(即在 pandas 对象上使用np.array()或np.asarray()时调用)已更新,以与 NumPy >= 2 正确配合使用 (GH 57739)当
future.infer_string为 True 时,Series.str.decode()的结果现在具有StringDtype(GH 60709)to_hdf()和to_hdf()现在可以通过StringDtype进行往返存储 (GH 60663)改进了
NumpyExtensionArray的repr,以考虑 NEP51 (GH 61085)Series.str.decode()增加了参数dtype,用于控制结果的 dtype (GH 60940)cumsum()、cummin()和cummax()聚合函数现在已为StringDtype列实现 (GH 60633)sum()聚合函数现在已为StringDtype列实现 (GH 59853)
显著的错误修复#
这些是可能导致显著行为变更的错误修复。
notable_bug_fix1#
在以前的版本中,比较不同字符串 dtype 的 Series(例如 pd.StringDtype("pyarrow", na_value=pd.NA) 与 pd.StringDtype("python", na_value=np.nan))会导致结果 dtype 不一致或错误地引发异常。pandas 现在将使用以下层级结构
Python 最低版本要求提升#
来确定不同字符串 dtype 比较时的结果 dtype。以下是一些示例:
当
pd.StringDtype("pyarrow", na_value=pd.NA)与任何其他字符串 dtype 比较时,结果将始终为boolean[pyarrow]。当
pd.StringDtype("python", na_value=pd.NA)与pd.StringDtype("pyarrow", na_value=np.nan)比较时,结果将为boolean,即 NumPy 支持的可空扩展数组。当
pd.StringDtype("python", na_value=pd.NA)与pd.StringDtype("python", na_value=np.nan)比较时,结果将为boolean,即 NumPy 支持的可空扩展数组。
API 变更#
启用
future.infer_string选项后,Index的集合操作(如并集或交集)在确定结果 Index 的 dtype 时,将忽略空RangeIndex或具有objectdtype 的空Index的 dtype (GH 60797)
弃用#
已弃用在
str.contains()、str.startswith()和str.endswith()中允许na为非bool值,对于尚未禁止此类值的 dtype 而言 (GH 59615)已弃用
StringDtype的"pyarrow_numpy"存储选项 (GH 60152)在
DataFrameGroupBy.apply()中将参数include_groups设置为True的弃用已从DeprecationWarning提升为FutureWarning;现在只允许False(GH 7155)
错误修复#
数值#
Series.mode()和DataFrame.mode()在dropna=False情况下存在错误,即在存在NA值时并非所有 dtype 都能正确排序 (GH 60702)Series.round()中存在一个错误,即当 dtype 为object时,总会引发TypeError(GH 61206)
字符串#
DataFrameGroupBy.min()、DataFrameGroupBy.max()、Resampler.min()和Resampler.max()中存在错误,即字符串 dtype 的所有 NA 值会返回 float 而不是字符串 dtype (GH 60810)DataFrame.sum()中存在错误,当axis=1时;DataFrameGroupBy.sum()或SeriesGroupBy.sum()中存在错误,当skipna=True时;以及Resampler.sum()中存在错误,即StringDtype的所有 NA 值结果为0而不是空字符串""(GH 60229)Series.__pos__()和DataFrame.__pos__()中存在错误,即当StringDtype的storage="pyarrow"时未引发Exception(GH 60710)Series.rank()中存在错误,即当StringDtype的storage="pyarrow"时,使用method="average"会错误地返回整数结果,并且在截断结果时会引发错误 (GH 59768)Series.replace()中存在错误,即当StringDtype替换为非字符串值时,未向上转换为objectdtype (GH 60282)Series.str.center()中存在错误,即当StringDtype的storage="pyarrow"时,在填充字符为奇数的特殊情况下,其行为与 Python 不匹配 (GH 54792)Series.str.replace()中存在错误,即当StringDtype的storage="pyarrow"且n < 0时 (GH 59628)Series.str.slice()中存在错误,即当ArrowDtype和StringDtype的storage="pyarrow"且step为负值时,会产生不正确的结果 (GH 59710)
索引#
Index.get_indexer()中存在错误,即在启用infer_string时,通过字符串 dtype 进行往返操作会出错 (GH 55834)
输入/输出#
DataFrame.to_excel()中存在错误,即将小数存储为字符串而不是数字 (GH 49598)
其他#
修复了当可选依赖项
pyarrow或jinja2未安装时inspect的使用问题 (GH 60196)
贡献者#
共有 24 人为本次发布贡献了补丁。名字旁带有“+”的人员是首次贡献补丁。
ChiLin Chiu +
Irv Lustig
Isuru Fernando +
Jake Thomas Trevallion +
Joris Van den Bossche
Kevin Amparado +
LOCHAN PAUDEL +
Lumberbot (aka Jack)
Marc Mueller +
Marco Edward Gorelli
Matthew Roeschke
Pandas Development Team
Patrick Hoefler
Richard Shadrach
SALCAN +
Sebastian Berg
Simon Hawkins
Thomas Li
Will Ayd
William Andrea
William Ayd
dependabot[bot]
jbrockmendel
tasfia8 +