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