1.5.1 版本的新变化 (2022 年 10 月 19 日)#
以下是 pandas 1.5.1 版本中的变更。请参阅 发布说明,以获取包括其他 pandas 版本在内的完整变更日志。
使用分类群组键的 groupby
行为 (GH 48645)#
在 pandas 1.5 版本之前,当分组键为分类 dtype 时,使用 groupby
并设置 dropna=False
仍然会删除 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__()
回归,该回归会将对象 dtype 的None
强制转换为NaN
(GH 48665)修复了
DataFrame.loc()
在使用全为True
的索引器将值设置为DataFrame
时的回归 (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()
在处理包含Categorical
且设置了check_like=True
的MultiIndex
时会引发异常的回归 (GH 48975)修复了
DataFrame.fillna()
在处理datetime64[ns]
dtype 且设置了inplace=True
时替换错误值的回归 (GH 48863)修复了
DataFrameGroupBy.size()
在axis=1
时不返回 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()
在 dtype 不匹配时的性能回归 (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 开发团队
Patrick Hoefler
Richard Shadrach
Shantanu
Torsten Wörtwein