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
或具有object
dtype 的空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
替换为非字符串值时,未向上转换为object
dtype (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 +