1.5.1 中的新功能 (2022 年 10 月 19 日)#
以下是 pandas 1.5.1 中的更改。请参阅 发布说明 以获取包括其他 pandas 版本在内的完整更新日志。
使用分类分组器进行 groupby 的行为 (GH 48645)#
在 pandas 1.5 之前的版本中,当分组器为分类数据类型时,即使使用 dropna=False,groupby 仍会删除 NA 值。1.5 版本尝试修复此问题,但它引入了一个回归,即当向 groupby 传递 observed=False 和 dropna=False 时,只会得到观察到的类别。结果发现,修复 dropna=False 错误的补丁与 observed=False 不兼容,因此决定最佳解决方案是恢复正确的 observed=False 行为,代价是重新引入 dropna=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的回归 (GH 48665)修复了当使用全为
True的索引器将值设置为DataFrame时DataFrame.loc()的回归 (GH 48701)read_csv()在使用已被读取过的 UTF-8 文件句柄时导致EmptyDataError的回归 (GH 48646)to_datetime()在utc=True且arg包含时区无关和时区感知参数时引发ValueError的回归 (GH 48678)修复了
DataFrame.loc()在设置空DataFrame时引发FutureWarning的回归 (GH 48480)修复了
DataFrame.describe()在结果包含NA时引发TypeError的回归 (GH 48778)修复了
DataFrame.plot()在kind="scatter"时忽略无效的colormap的回归 (GH 48726)修复了
MultiIndex.values()重置底层Index对象的freq属性的回归 (GH 49054)修复了
factorize()在na_sentinel不为None且sort=False时的性能回归 (GH 48620)修复了当
DataFrame.to_sql()中提供的表名与数据库中实际使用的表名不匹配时,在发出警告期间导致AttributeError的回归 (GH 48733)修复了
to_datetime()在arg是包含纳秒的日期字符串且format包含%f时会引发ValueError的回归 (GH 48767)修复了
testing.assert_frame_equal()在MultiIndex包含Categorical且check_like=True时引发异常的回归 (GH 48975)修复了
DataFrame.fillna()在datetime64[ns]数据类型和inplace=True时替换错误值的回归 (GH 48863)修复了当
axis=1时DataFrameGroupBy.size()未返回 Series 的问题 (GH 48738)修复了
DataFrameGroupBy.apply()在用户定义函数作用于空 dataframe 时出现的回归 (GH 47985)修复了
DataFrame.apply()在通过关键字参数传递非零axis时出现的回归 (GH 48656)修复了
Series.groupby()和DataFrame.groupby()在分组器为可空数据类型 (例如Int64) 或 PyArrow 支持的字符串数组,包含空值,且dropna=False时出现的回归 (GH 48794)修复了
Series.isin()在数据类型不匹配时的性能回归 (GH 49162)修复了
DataFrame.to_parquet()在文件名被指定为bytes时引发异常的回归 (GH 48944)修复了
ExcelWriter中book属性无法再设置的回归;但是,设置此属性现已弃用,此功能将在未来的 pandas 版本中移除 (GH 48780)修复了
DataFrame.corrwith()在使用method="spearman"计算绑定数据的相关性时出现的回归 (GH 48826)
错误修复#
修复了
Series.__getitem__()在整数键和布尔Index时未回退到位置索引的错误 (GH 48653)修复了
DataFrame.to_hdf()在布尔索引时引发AssertionError的错误 (GH 48667)修复了
testing.assert_index_equal()对于NA不匹配的扩展数组引发ValueError的错误 (GH 48608)修复了
DataFrame.pivot_table()在将日期时间列设置为索引时引发意外的FutureWarning的错误 (GH 48683)修复了
DataFrame.sort_values()在对包含布尔稀疏列的DataFrame调用时发出不必要的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