1.2.1 的新增内容(2021 年 1 月 20 日)#

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

固定回归#

我们已经恢复了导致 pandas 1.2.0 中出现多个与绘图相关的回归的提交(GH 38969GH 38736GH 38865GH 38947GH 39126)。因此,在 pandas 1.2.0 中报告为已修复的与条形图中刻度标签不一致相关的错误再次出现(GH 26186GH 11465

在未对齐的 DataFrame 上调用 NumPy ufunc #

在 pandas 1.2.0 之前,在非对齐 DataFrame(或 DataFrame / Series 组合)上调用 NumPy ufunc 将忽略索引,仅按形状匹配输入,并使用第一个 DataFrame 的索引/列作为结果:

In [1]: df1 = pd.DataFrame({"a": [1, 2], "b": [3, 4]}, index=[0, 1])
In [2]: df2 = pd.DataFrame({"a": [1, 2], "b": [3, 4]}, index=[1, 2])
In [3]: df1
Out[3]:
   a  b
0  1  3
1  2  4
In [4]: df2
Out[4]:
   a  b
1  1  3
2  2  4

In [5]: np.add(df1, df2)
Out[5]:
   a  b
0  2  6
1  4  8

这与其他 pandas 操作的工作方式形成鲜明对比,其他操作首先对齐输入:

In [6]: df1 + df2
Out[6]:
     a    b
0  NaN  NaN
1  3.0  7.0
2  NaN  NaN

在 pandas 1.2.0 中,我们重构了在 DataFrame 上调用 NumPy ufunc 的方式,这首先开始对齐输入(GH 39184),就像其他 pandas 操作中发生的情况以及在 Series 对象上调用的 ufunc 发生的情况一样。

对于 pandas 1.2.1,我们恢复了以前的行为以避免重大更改,但上面的未对齐输入示例现在将发出警告,并且未来的 pandas 2.0 版本将首先开始对齐输入( GH 39184) 。在 Series 对象(例如 )上调用 NumPy ufunc已经对齐并继续这样做。np.add(df1, df2)np.add(s1, s2)

为了避免警告并保持忽略索引的当前行为,请将参数之一转换为 NumPy 数组:

In [7]: np.add(df1, np.asarray(df2))
Out[7]:
   a  b
0  2  6
1  4  8

要获得未来的行为并消除警告,您可以在将参数传递给 ufunc 之前手动对齐:

In [8]: df1, df2 = df1.align(df2)
In [9]: np.add(df1, df2)
Out[9]:
     a    b
0  NaN  NaN
1  3.0  7.0
2  NaN  NaN

Bug修复

  • 错误read_csv()导致float_precision="high"长指数字符串的段错误或错误解析。在某些情况下,这会导致回归,因为float_precisionpandas 1.2.0 中的默认值已更改(GH 38753

  • 初始化时发生或read_csv()时未关闭打开的文件句柄的错误( GH 39024 )csv.ErrorUnicodeDecodeError

  • 当具有混合数据类型时pandas.testing.assert_index_equal()引发TypeError的错误( GH 39168check_order=FalseIndex

其他

贡献者#

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

  • 艾达·德拉金达 +

  • 安德鲁·维特斯卡

  • 布莱恩·卡特勒

  • 李芳辰

  • 乔里斯·范登博什

  • 马修·罗斯克

  • 马修·泽特林 +

  • 米塞克斯机器

  • 米凯尔·贾尼亚克

  • 奥马尔·阿菲菲 +

  • 熊猫开发团队

  • 理查德·沙德拉克

  • 西蒙·霍金斯

  • 特尔吉·彼得森

  • 托斯顿·沃特温

  • 王爱勇

  • 杰布罗克门德尔

  • 凯勒克普勒

  • 姆泽特林11

  • 帕特里克