1.2.1 的新增内容(2021 年 1 月 20 日)#
这些是 pandas 1.2.1 中的变化。请参阅发行说明以获取完整的变更日志,包括其他版本的 pandas。
固定回归#
修复了以二进制模式而不是文本模式
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)ValueError
DataFrame
"0 - name"
当具有未排序的列并且索引器是标量时,修复
DataFrame.loc()
了设置中的回归( GH 38601)ValueError
DataFrame
MultiIndex
修复了使用
DataFrame.loc()
提升和类似列表的列索引器放大设置中的回归(GH 39147)KeyError
MultiIndex
DataFrame
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)ValueError
DataFrame
bytes
修复了dtype
Series.fillna()
引发的回归(GH 38851)RecursionError
datetime64[ns, UTC]
修复了错误返回的对象
NaT
之间比较的回归(GH 39151)datetime.date
True
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)TypeError
check_like=True
Index
我们已经恢复了导致 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_precision
pandas 1.2.0 中的默认值已更改(GH 38753)初始化时发生或
read_csv()
时未关闭打开的文件句柄的错误( GH 39024 )csv.Error
UnicodeDecodeError
当具有混合数据类型时
pandas.testing.assert_index_equal()
引发TypeError
的错误( GH 39168)check_order=False
Index
其他#
已弃用的属性
_AXIS_NAMES
and_AXIS_NUMBERS
ofDataFrame
和Series
将不再显示在dir
orinspect.getmembers
调用中(GH 38740)将最低 fastparquet 版本提升至 0.4.0 以避免
AttributeError
numba ( GH 38344 )将最低 pymysql 版本提升到 0.8.1 以避免测试失败(GH 38344)
修复了 Python 3.9.1 中 MacOS 11 上的构建失败问题 ( GH 38766 )
添加了对 pandas 1.1.0中的向后不兼容
check_freq
arg 的引用testing.assert_frame_equal()
,新增内容( GH 34050 )testing.assert_series_equal()
贡献者#
共有 20 人为此版本贡献了补丁。名字带有“+”的人首次贡献了补丁。
艾达·德拉金达 +
安德鲁·维特斯卡
布莱恩·卡特勒
李芳辰
乔里斯·范登博什
马修·罗斯克
马修·泽特林 +
米塞克斯机器
米凯尔·贾尼亚克
奥马尔·阿菲菲 +
熊猫开发团队
理查德·沙德拉克
西蒙·霍金斯
特尔吉·彼得森
托斯顿·沃特温
王爱勇
杰布罗克门德尔
凯勒克普勒
姆泽特林11
帕特里克