1.2.1 的新增内容(2021 年 1 月 20 日)# 这些是 pandas 1.2.1 中的变化。请参阅发行说明以获取完整的变更日志,包括其他版本的 pandas。 固定回归# to_csv()修复了行数多于chunksize( GH 38714 )时创建损坏的 zip 文件的回归问题 修复了以二进制模式而不是文本模式to_csv()打开时的回归( GH 39247)codecs.StreamReaderWriter read_csv()修复了编码错误策略 ( )中的回归和其他读取函数在未指定编码时errors未默认的情况( GH 38989 )"replace" read_excel()修复了非原始字节文件句柄的回归( GH 38788) DataFrame.to_stata()修复了发生错误时不删除创建的文件的回归( GH 39202) 修复了扩展和新列来自类型时DataFrame.__setitem__提升的回归(GH 39010)ValueErrorDataFrame"0 - name" 当具有未排序的列并且索引器是标量时,修复DataFrame.loc()了设置中的回归( GH 38601)ValueErrorDataFrameMultiIndex 修复了使用DataFrame.loc()提升和类似列表的列索引器放大设置中的回归(GH 39147)KeyErrorMultiIndexDataFrame groupby()修复了分组列中的回归Categorical不显示未使用的类别grouped.indices(GH 38642) DataFrameGroupBy.sem()修复了SeriesGroupBy.sem()非数字列的存在会导致错误而不是被删除的回归( GH 38774) DataFrameGroupBy.diff()修复了int8和列中的回归问题int16(GH 39050) DataFrame.groupby()修复了聚合ExtensionDType非数字值时可能失败的回归( GH 38980) 修复了原地回归Rolling.skew()和Rolling.kurt()修改对象的问题(GH 38908) 修复了 tz 感知列的回归DataFrame.any()且不DataFrame.all()返回结果datetime64( GH 38723 ) 修复了在 apply 函数中使用 str 访问器的DataFrame.apply()回归(GH 38979)axis=1 修复了具有 dtype时DataFrame.replace()引发的回归(GH 38900)ValueErrorDataFramebytes 修复了dtypeSeries.fillna()引发的回归(GH 38851)RecursionErrordatetime64[ns, UTC] 修复了错误返回的对象NaT之间比较的回归(GH 39151)datetime.dateTrue accumulate()修复了在DataFrame 上调用 NumPy ufuncs 时的回归问题,例如np.maximum.accumulate(df)(GH 39259) object修复了小数点后尾随 0 被截断的 dtype 类浮点字符串的 repr 回归问题( GH 38708 ) AttributeError修复了PyArrow 版本 [0.16.0, 1.0.0) ( GH 38801 )引发的回归问题 修复了当或列具有混合数据类型时pandas.testing.assert_frame_equal()引发的回归( GH 39168)TypeErrorcheck_like=TrueIndex 我们已经恢复了导致 pandas 1.2.0 中出现多个与绘图相关的回归的提交(GH 38969、GH 38736、GH 38865、GH 38947和GH 39126)。因此,在 pandas 1.2.0 中报告为已修复的与条形图中刻度标签不一致相关的错误再次出现(GH 26186和GH 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 39168)check_order=FalseIndex 其他# 已弃用的属性_AXIS_NAMESand _AXIS_NUMBERSofDataFrame和Series将不再显示在dirorinspect.getmembers调用中(GH 38740) 将最低 fastparquet 版本提升至 0.4.0 以避免AttributeErrornumba ( GH 38344 ) 将最低 pymysql 版本提升到 0.8.1 以避免测试失败(GH 38344) 修复了 Python 3.9.1 中 MacOS 11 上的构建失败问题 ( GH 38766 ) 添加了对 pandas 1.1.0中的向后不兼容check_freqarg 的引用testing.assert_frame_equal(),新增内容( GH 34050 )testing.assert_series_equal() 贡献者# 共有 20 人为此版本贡献了补丁。名字带有“+”的人首次贡献了补丁。 艾达·德拉金达 + 安德鲁·维特斯卡 布莱恩·卡特勒 李芳辰 乔里斯·范登博什 马修·罗斯克 马修·泽特林 + 米塞克斯机器 米凯尔·贾尼亚克 奥马尔·阿菲菲 + 熊猫开发团队 理查德·沙德拉克 西蒙·霍金斯 特尔吉·彼得森 托斯顿·沃特温 王爱勇 杰布罗克门德尔 凯勒克普勒 姆泽特林11 帕特里克