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