0.23.2 版本新特性 (2018 年 7 月 5 日)#

这是 0.23.x 系列的一个次要错误修复版本,包含了一些小的回归修复和错误修复。我们建议所有用户升级到此版本。

注意

pandas 0.23.2 是第一个兼容 Python 3.7 的 pandas 版本 (GH 20552)

警告

从 2019 年 1 月 1 日起,pandas 的功能发布版本将只支持 Python 3。更多信息请参阅停止支持 Python 2.7

对整个 DataFrame 的逻辑归约#

DataFrame.all()DataFrame.any() 现在接受 axis=None 参数,以便对所有轴进行归约得到一个标量值 (GH 19976)

In [1]: df = pd.DataFrame({"A": [1, 2], "B": [True, False]})

In [2]: df.all(axis=None)
Out[2]: False

这也提供了与 NumPy 1.15 的兼容性,NumPy 1.15 现在会分派给 DataFrame.all。使用 NumPy 1.15 和 pandas 0.23.1 或更早版本时,numpy.all() 将不再对所有轴进行归约

>>> # NumPy 1.15, pandas 0.23.1
>>> np.any(pd.DataFrame({"A": [False], "B": [False]}))
A    False
B    False
dtype: bool

使用 pandas 0.23.2,它将正确地返回 False,就像 NumPy < 1.15 时一样。

In [3]: np.any(pd.DataFrame({"A": [False], "B": [False]}))
Out[3]: False

修复的回归问题#

  • 修复了 to_csv() 在错误处理文件对象时导致的回归问题 (GH 21471)

  • 重新允许 MultiIndex 具有重复的层级名称。通过名称访问具有重复名称的层级仍然会引发错误 (GH 19029)。

  • DataFrame.first_valid_index()Series.first_valid_index() 在行索引包含重复值时会引发错误的 Bug (GH 21441)

  • 修复了打印带有长名称层次列的 DataFrames 时的问题 (GH 21180)

  • 修复了使用包含分类日期时间值的 MultiIndex 或多个键进行 reindex()groupby() 时导致的回归问题 (GH 21390)。

  • 修复了对象 dtype 的一元负运算导致的回归问题 (GH 21380)

  • Timestamp.ceil()Timestamp.floor() 在时间戳是舍入频率的倍数时存在的 Bug (GH 21262)

  • 修复了 to_clipboard() 默认使用空格分隔而非制表符分隔复制 DataFrames 的回归问题 (GH 21104)

构建变更#

  • 源代码和二进制分发包不再包含测试数据文件,从而减小了下载大小。使用 pandas.test() 时,依赖这些数据文件的测试将被跳过。(GH 19320)

错误修复#

转换

索引

输入/输出

分类

  • 在 Python 2.7 下极少数情况下,渲染 Categorical dtype 的 Series 时存在的 Bug (GH 21002)

时区

  • TimestampDatetimeIndex 中存在的 Bug,在夏令时 (DST) 转换后传递一个已本地化的 Timestamp 会返回 DST 转换之前的日期时间 (GH 20854)

  • 比较包含时区感知 DatetimeIndex 列(包含 DST 转换)的 DataFrame 时,会引发 KeyError 的 Bug (GH 19970)

  • DatetimeIndex.shift() 在跨越 DST 进行偏移时会引发 AssertionError 的 Bug (GH 8616)

  • Timestamp 构造函数中存在的 Bug,传递无效时区偏移指示符 (Z) 时不会引发 ValueError (GH 8910)

  • Timestamp.replace() 中存在的 Bug,在 DST 边界处替换会保留不正确的偏移量 (GH 7825)

  • DatetimeIndex.reindex() 在重新索引时区不感知和时区感知 DatetimeIndex 时存在的 Bug (GH 8306)

  • DatetimeIndex.resample() 在跨越 DST 边界进行降采样时存在的 Bug (GH 8531)

时间差

  • Timedelta 中存在的 Bug,短于 1 微秒的非零时间差被认为是 False (GH 21484)

贡献者#

共有 17 人为本次发布贡献了补丁。名字旁有“+”标记的人是首次贡献补丁。

  • David Krych

  • Jacopo Rota +

  • Jeff Reback

  • Jeremy Schendel

  • Joris Van den Bossche

  • Kalyan Gokhale

  • Matthew Roeschke

  • Michael Odintsov +

  • Ming Li

  • Pietro Battiston

  • Tom Augspurger

  • Uddeshya Singh

  • Vu Le +

  • alimcmaster1 +

  • david-liu-brattle-1 +

  • gfyoung

  • jbrockmendel