新闻详情

新闻详情

首页 / 资讯中心 / 详情

pandas v0.23.2 版本发布说明深度解读:axis=None 逻辑归约、回归修复与构建变更

发布时间:2026/9/19 19:22:29来源:尧图网络
pandas v0.23.2 版本发布说明深度解读:axis=None 逻辑归约、回归修复与构建变更
pandas v0.23.2 版本发布说明深度解读axisNone 逻辑归约、回归修复与构建变更【免费下载链接】pandasFlexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more项目地址: https://gitcode.com/gh_mirrors/pa/pandaspandas 0.23.2 是 0.23.x 系列中的一个补丁bug-fix版本于 2018 年 7 月 5 日发布主要包含若干小型回归修复与缺陷修复官方建议所有 0.23.x 用户升级到该版本。本篇文章以 v0.23.2 官方发布说明 为骨架结合当前仓库源码逐条讲解这一版本中最具影响力的 API 增强DataFrame.all/DataFrame.any支持axisNone全量归约、固定回归清单、构建变更以及按模块分类的 bug 修复清单帮助你完整理解 0.23.2 在 pandas 演进历史中的位置与具体改动。版本定位与兼容性要点在阅读具体改动前先了解 0.23.2 的两个重要兼容性背景Python 3.7 首个兼容版本pandas 0.23.2 是第一个与 Python 3.7 兼容的 pandas 版本对应 issue #20552。Python 2 时代进入倒计时官方在发布说明中明确警告自 2019 年 1 月 1 日起pandas 功能版本feature release将仅支持 Python 3Python 2.7 支持被逐步淘汰。该版本整体属于 minor bug-fix release不引入大规模新功能核心价值在于修复 0.23.1 引入的回归问题并为后续 Python 3.7 生态铺路。核心增强DataFrame.all/DataFrame.any支持axisNone这是 0.23.2 中唯一的增强enhancement也是最具技术含量的一项改动DataFrame.all和DataFrame.any现在接受axisNone可以跨所有轴行与列归约得到单个标量布尔值issue #19976。新行为示例 import pandas as pd df pd.DataFrame({A: [1, 2], B: [True, False]}) df.all(axisNone) FalseaxisNone意味着不沿任何单一轴归约而是把整个 DataFrame 当成一个整体逐元素执行逻辑归约最终返回一个bool标量。与 NumPy 1.15 的兼容性背景这项增强的直接动因是NumPy 1.15 的行为变更。NumPy 1.15 起numpy.all/numpy.any会分派dispatch到DataFrame.all/DataFrame.any。而在 pandas 0.23.1 及更早版本中DataFrame.all/DataFrame.any不支持axisNone导致配合 NumPy 1.15 时numpy.all/numpy.any无法再跨所有轴归约# NumPy 1.15 pandas 0.23.1行为异常 np.any(pd.DataFrame({A: [False], B: [False]})) A False B False dtype: bool升级到 pandas 0.23.2 后由于DataFrame.all/DataFrame.any支持了axisNone上述调用会正确地返回False标量与 NumPy 1.15 时代的行为保持一致 np.any(pd.DataFrame({A: [False], B: [False]})) False源码级实现原理从当前仓库源码看DataFrame.all/DataFrame.any的实现逻辑沉淀在 pandas/core/generic.py 与 pandas/core/frame.py 中。统一入口_logical_funcNDFrame.any与NDFrame.all都委托给 _logical_func分别传入nanops.nanany与nanops.nanall作为底层归约函数。axisNone时采用分步归约策略先沿axis0index归约得到一个 Series再对该 Series 沿剩余轴继续归约从而把全量归约复用已有的单轴归约能力if self.ndim 1 and axis is None: # Reduce along one dimension then the other, to simplify DataFrame._reduce res self._logical_func(name, func, axis0, bool_onlybool_only, skipnaskipna, **kwargs) return res._logical_func(name, func, skipnaskipna, **kwargs)底层 nan 感知归约真正的逐元素逻辑归约由nanops.nanany与nanops.nanall定义于 pandas/core/nanops.py完成它们负责处理缺失值NaN在逻辑运算中的语义。公开 API 文档与参数语义当前 DataFrame.any 的 docstring 对axis参数的三种取值给出了明确说明axis取值归约方向返回类型0/index沿索引归约以原列标签为索引的 Series1/columns沿列归约以原索引为索引的 SeriesNone跨所有轴归约单个bool标量其余参数bool_only默认False仅包含布尔列Series 不适用、skipna默认True排除 NA若整行/整列为 NA 且skipnaTrue结果视为False如同空行/空列。测试覆盖当前仓库的 pandas/tests/reductions/test_reductions.py 中对all/any的语义有系统性测试覆盖 object dtype、缺失值、nullable 类型的 Kleene 逻辑、datetime-like 与 string dtype 等场景可视为该增强后续演进的回归保障。固定回归Fixed regressions0.23.2 修复了 8 项回归问题覆盖 I/O、MultiIndex、时间戳舍入与剪贴板等多个领域to_csv处理 file-like 对象回归修复将 file-like 对象而非文件路径传给to_csv时的回归issue #21471。MultiIndex 允许重复层级名重新允许MultiIndex拥有重复的 level 名称但通过名称访问具有重复名字的 level 仍会抛出错误issue #19029。first_valid_index重复行索引 BugDataFrame.first_valid_index与Series.first_valid_index在行索引存在重复值时抛错的 Bugissue #21441。层次化列打印回归修复具有长名称的层次化列hierarchical columns的 DataFrame 打印问题issue #21180。reindex/groupby与分类 datetime-like 值修复DataFrame.reindex与DataFrame.groupby在使用包含 categorical datetime-like 值的 MultiIndex 或多个分组键时的回归issue #21390。一元负运算 object dtype 回归修复 object dtype 上的一元负运算unary negative回归issue #21380。Timestamp.ceil/Timestamp.floor边界 Bug当时间戳恰好是舍入频率的整数倍时Timestamp.ceil与Timestamp.floor出现 Bugissue #21262。to_clipboard分隔符回归修复to_clipboard默认以空格而非制表符tab分隔复制数据的回归issue #21104。构建变更发行包瘦身0.23.2 的一项面向分发的改动源码包与二进制发行包不再包含测试数据文件从而显著减小下载体积issue #19320。对应的行为变化是使用pandas.test()运行测试时凡依赖这些数据文件的测试将被跳过skip。这提醒使用者若需要运行完整测试套件应当从源码仓库获取测试数据而不是依赖 PyPI 上的发行包。按模块分类的 Bug 修复清单0.23.2 其余修复按功能模块分组下面逐类列出并补充说明。Conversion类型转换用迭代器/生成器构造Index的 Bug修复使用 iterator 或 generator 构造Index时的 Bugissue #21470。Series.nlargest整型边界 Bug当有符号或无符号整型 dtype 的最小值出现时Series.nlargest的 Bugissue #21426。Indexing索引Index.get_indexer_non_unique与 categorical 键使用 categorical 键调用Index.get_indexer_non_unique时的 Bugissue #21448。MultiIndex单层比较nlevels 1的 MultiIndex 参与相等/不等比较时抛错的 Bugissue #21149。DataFrame.drop行为不一致DataFrame.drop在唯一索引与非唯一索引上的行为不一致issue #21494。DataFrame.duplicated递归深度溢出列数很大时DataFrame.duplicated触发 maximum recursion depth exceeded 的 Bugissue #21524。I/Oread_csv边界参数组合nrows0、low_memoryTrue且index_col不为None时read_csv错误地抛出异常issue #21141。json_normalize与record_prefixjson_normalize使用整型列格式化record_prefix时的 Bugissue #21536。CategoricalPython 2.7 下的 Series 渲染极少数条件下Python 2.7渲染Categoricaldtype 的Series出现 Bugissue #21002。Timezones时区时区相关修复是 0.23.2 中数量最多的类别集中于DST夏令时切换边界的语义正确性Timestamp/DatetimeIndex构造传入 DST 转换之后本地化的Timestamp会返回 DST 转换之前的 datetimeissue #20854。时区感知列比较带 tz-awareDatetimeIndex列的 DataFrame 在 DST 切换处比较时抛出KeyErrorissue #19970。DatetimeIndex.shift跨 DST跨 DST 平移时抛出AssertionErrorissue #8616。Timestamp构造无效时区偏移传入无效时区偏移指示符Z时未抛出ValueErrorissue #8910。Timestamp.replace在 DST 边界在 DST 边界执行Timestamp.replace会保留错误的偏移量issue #7825。DatetimeIndex.reindex混用时区在 tz-naive 与 tz-aware 的DatetimeIndex之间 reindex 时的 Bugissue #8306。DatetimeIndex.resample跨 DST 降采样跨 DST 边界降采样downsample时的 Bugissue #8531。这些修复的共同主题是时间轴上 DST 切换点通常每年两次附近的本地时间到 UTC 的映射存在二义性0.23.2 对这些边界场景的偏移计算与索引对齐行为进行了系统性校正。Timedelta亚微秒 Timedelta 真值判断非零但小于 1 微秒的 timedelta 被判为False的 Bugissue #21484。此修复保证了非零即真的基本真值语义在极小时间粒度下依然成立。贡献者名单该版本由 0.23.1 至 0.23.2 区间内的贡献者共同完成完整名单由发布说明中的 contributors 指令自动生成见 v0.23.2.rst 结尾。升级建议与版本演进参考综合来看0.23.2 的核心升级价值有三点NumPy 1.15 生态就绪如果你所在环境需要搭配 NumPy 1.15 使用升级到 0.23.2 可恢复numpy.all/numpy.any对 DataFrame 的全量归约语义。回归修复全面8 项固定回归覆盖了to_csv、MultiIndex、时间戳舍入、剪贴板等高频场景尤其对 0.23.1 升级用户价值明显。DST 边界正确性时区场景尤其在跨时区数据处理、金融与运维时间序列中在 DST 切换点附近的行为得到成体系修复。关于 0.23.x 系列更完整的演进脉络可继续查阅同目录下的其他版本说明如 v0.23.0.rst、v0.23.1.rst以及下一个主要版本 v0.24.0.rstDataFrame.all/DataFrame.any的axisNone语义至今仍保留在当前 DataFrame.any 实现 中可见该改动在设计上的长期稳定性。【免费下载链接】pandasFlexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more项目地址: https://gitcode.com/gh_mirrors/pa/pandas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OpenClaw 从零部署,模型通道改到 TaoToken 通道能行吗? 2026/9/19 21:55:54

OpenClaw 从零部署,模型通道改到 TaoToken 通道能行吗?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
401 认证失败?TaoToken + Aider 这样验证 2026/9/19 21:55:54

401 认证失败?TaoToken + Aider 这样验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
DeepSeek 在 Codex 里报 401?TaoToken 这样配 Base URL 2026/9/19 21:55:54

DeepSeek 在 Codex 里报 401?TaoToken 这样配 Base URL

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Hugo 短代码中的 .Site:详解 SHORTCODE.Site 方法及 Site 对象全能力 2026/9/19 21:55:54

Hugo 短代码中的 .Site:详解 SHORTCODE.Site 方法及 Site 对象全能力

Hugo 短代码中的 .Site:详解 SHORTCODE.Site 方法及 Site 对象全能力 【免费下载链接】hugo The world’s fastest framework for building websites. 项目地址: https://gitcode.com/gh_mirrors/hu/hugo 导读 在 Hugo 短代码(Shortcode&#xf…

阅读更多 →
用Python将Word习题答案转化为结构化数据资产 2026/9/19 21:55:54

用Python将Word习题答案转化为结构化数据资产

简介:《汽车理论》课后习题答案解析文档,适合车辆工程、交通运输等专业学生及备考人员使用。文档围绕汽车动力性分析、驱动力与行驶阻力平衡、变速器档位选择、空气阻力与滚动阻力、转动惯量、爬坡度与附着率等核心章节,对第一章“汽车的动力…

阅读更多 →
基于STM32和微信小程序的宠物自动喂养系统设计 2026/9/19 21:52:53

基于STM32和微信小程序的宠物自动喂养系统设计

简介:设计资料围绕基于STM32的猫狗宠物喂养系统展开,面向物联网嵌入式学习者、电子设计竞赛参赛者及智能宠物硬件开发者,完整呈现从需求分析到系统落地的全流程方案。内容基于STM32F103RCT6主控,结合ESP8266 WiFi模块、28BYJ4步进…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞