1.5.1 版本的新内容(2022年10月19日)#
这是 pandas 1.5.1 中的更改。请参阅 发行说明 以获取包括其他版本 pandas 的完整更新日志。
groupby 使用分类分组器的行为 (GH 48645)#
在 pandas 1.5 之前的版本中,当分组器是分类数据类型时,groupby 使用 dropna=False 仍然会删除 NA 值。1.5 版本尝试修复了这个问题,但是引入了一个回归问题,即传递 observed=False 和 dropna=False 给 groupby 会导致只显示观察到的类别。发现修复 dropna=False 错误的补丁与 observed=False 不兼容,决定最好的解决方案是以重新引入 dropna=False 错误为代价恢复正确的 observed=False 行为。
In [1]: df = pd.DataFrame(
...: {
...: "x": pd.Categorical([1, None], categories=[1, 2, 3]),
...: "y": [3, 4],
...: }
...: )
...:
In [2]: df
Out[2]:
x y
0 1 3
1 NaN 4
1.5.0 行为:
In [3]: # Correct behavior, NA values are not dropped
df.groupby("x", observed=True, dropna=False).sum()
Out[3]:
y
x
1 3
NaN 4
In [4]: # Incorrect behavior, only observed categories present
df.groupby("x", observed=False, dropna=False).sum()
Out[4]:
y
x
1 3
NaN 4
1.5.1 行为:
# Incorrect behavior, NA values are dropped
In [3]: df.groupby("x", observed=True, dropna=False).sum()
Out[3]:
y
x
1 3
NaN 4
# Correct behavior, unobserved categories present (NA values still dropped)
In [4]: df.groupby("x", observed=False, dropna=False).sum()
Out[4]:
y
x
1 3
2 0
3 0
NaN 4
修复回归问题#
修复了
Series.__setitem__()将None转换为NaN用于对象 dtype 的问题 (GH 48665)修复了当将值设置为所有
True索引器的DataFrame时DataFrame.loc()中的回归问题 (GH 48701)在
read_csv()中的回归导致在使用已经读取的 UTF-8 文件句柄时引发EmptyDataError(GH 48646)当
utc=True且arg包含时区无感知和有感知的参数时,to_datetime()中的回归引发了ValueError(GH 48678)修复了在设置一个空的
DataFrame时DataFrame.loc()引发FutureWarning的回归问题 (GH 48480)修复了当结果包含
NA时DataFrame.describe()引发TypeError的回归问题 (GH 48778)修复了
DataFrame.plot()在kind="scatter"时忽略无效colormap的回归问题 (GH 48726)修复了
MultiIndex.values()重置底层Index对象的freq属性的回归问题 (GH 49054)在
na_sentinel不是None且sort=False时,修复了factorize()中的性能退化问题 (GH 48620)修复了在
DataFrame.to_sql()中提供的表名与数据库中实际使用的表名不匹配时发出的警告期间导致的AttributeError回归 (GH 48733)修复了当
arg是一个包含纳秒的日期字符串且format包含%f时,to_datetime()会引发ValueError的问题 (GH 48767)修复了在
testing.assert_frame_equal()中对包含Categorical的MultiIndex使用check_like=True时引发的回归问题 (GH 48975)修复了
DataFrame.fillna()在datetime64[ns]数据类型和inplace=True情况下替换错误值的回归问题 (GH 48863)修复了当
axis=1时DataFrameGroupBy.size()不返回 Series 的问题 (GH 48738)修复了当用户定义的函数在空数据帧上调用时
DataFrameGroupBy.apply()中的固定回归 (GH 47985)修复了通过关键字参数传递非零
axis时DataFrame.apply()中的回归问题 (GH 48656)在分组器是可空数据类型(例如
Int64)或基于 PyArrow 的字符串数组、包含空值且dropna=False时,修复了Series.groupby()和DataFrame.groupby()中的回归问题 (GH 48794)修复了
Series.isin()中由于dtype不匹配导致的性能退化问题 (GH 49162)修复了当文件名指定为
bytes时DataFrame.to_parquet()引发的回归问题 (GH 48944)修复了
ExcelWriter中的回归问题,其中book属性不能再被设置;然而,设置此属性现在已被弃用,并且此功能将在未来版本的 pandas 中被移除 (GH 48780)在计算具有
method="spearman"的并列数据的DataFrame.corrwith()相关性时修复了回归问题 (GH 48826)
错误修复#
在
Series.__getitem__()中,对于整数键和布尔值Index没有回退到位置的错误 (GH 48653)在
DataFrame.to_hdf()中使用布尔索引引发AssertionError的错误 (GH 48667)在扩展数组中,对于不匹配的
NA引发ValueError的testing.assert_index_equal()中的错误 (GH 48608)在将datetime列设置为索引时,
DataFrame.pivot_table()中出现意外的FutureWarning的错误 (GH 48683)在具有布尔稀疏列的
DataFrame上调用时,DataFrame.sort_values()发出不必要的FutureWarning的错误 (GH 48784)arrays.ArrowExtensionArray中的一个错误,在与一个无效对象进行比较操作时不会引发NotImplementedError(GH 48833)
其他#
在使用警告提示参数即将变为仅关键字时,避免显示已弃用的签名(GH 48692)
贡献者#
总共有16人为此版本贡献了补丁。名字后面带有“+”的人首次贡献了补丁。
Amay Patel +
Deepak Sirohiwal +
Dennis Chukwunta
Gaurav Sheni
Himanshu Wagh +
Lorenzo Vainigli +
Marc Garcia
Marco Edward Gorelli
Matthew Roeschke
MeeseeksMachine
Noa Tamir
Pandas Development Team
Patrick Hoefler
Richard Shadrach
Shantanu
Torsten Wörtwein