尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
pandas 列选择实战:保留、删除与重命名列的 pandas 写法及与 SAS、Stata、电子表格的对照
pandas 列选择实战保留、删除与重命名列的 pandas 写法及与 SAS、Stata、电子表格的对照【免费下载链接】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本文聚焦 pandas 中三种最基本的列级操作——按标签保留列、删除列、重命名列以官方对比文档中使用的tips数据集为贯穿示例给出每种操作的 pandas 写法、等价于 SAS / Stata / 电子表格的对应做法并结合 DataFrame.getitem、DataFrame.drop、DataFrame.rename 的源码实现讲清这些操作在内部如何解析标签、返回新对象以及出错的边界条件。读完后你能在不同工具间自如翻译列选择需求并理解 pandas 返回副本而非就地修改的设计约束。1. 背景三个对比文档共用的 tips 示例includes/column_selection.rst 是 pandas 文档与 SAS / Stata / 电子表格对比系列中Selection of columns小节共用的 pandas 代码片段它被三篇对比指南分别 includecomparison_with_sas.rst先讲 SAS 的DATA步骤关键字keep/drop/renamecomparison_with_stata.rst先讲 Stata 的keep/drop/rename命令comparison_with_spreadsheets.rst先讲电子表格中隐藏列、删除列、跨表引用列范围、修改表头单元格文字四种做法。三篇文档均以tips餐厅小费数据集为对象数据通过read_csv读入原始文件即仓库测试数据 tips.csv。下文沿用该数据依次演示保留部分列、删除一列、重命名列三个操作。2. 操作一保留指定列Keep certain columns片段给出的 pandas 写法是tips[[sex, total_bill, tip]]即对 DataFrame 传入一个列标签列表返回只含这些列的新 DataFrame。这里有两个值得注意的行为边界均可从源码得到解释列表选择是严格匹配。在 DataFrame.getitem中非单键路径先经check_dict_or_set_indexer(key)处理随后对列表型 key 调用indexer self.columns._get_indexer_strict(key, columns)[1]从源码结构看_get_indexer_strict要求列表中每一个标签都必须真实存在于列索引中否则抛出KeyError——这与 SAS 中keep了一个不存在的变量名会报错的行为一致而不是静默忽略。最终结果通过self.take(indexer, axis1)取列且列的顺序按列表给定与原表顺序无关。单标签与列表标签返回类型不同。同一段__getitem__的前半部分frame.py#L4280-L4292有单键快速路径当 key 可哈希且self.columns.get_loc(key)返回int该标签唯一出现一次时直接return self._get_item(key)即tips[sex]返回一个Series而tips[[sex, tip]]返回列表型 key走take路径返回DataFrame。因此保留单列若想仍得到 DataFrame需要写成tips[[sex]]。3. 操作二删除一列Drop a column片段给出的写法是tips.drop(sex, axis1)axis1表示从列轴移除标签sex返回不含该列的新 DataFrame原对象不变。结合 drop 的函数签名与文档字符串实际可用的参数比片段展示的更完整参数取值说明labels单个标签或标签列表要删除的行/列标签元组被视为单个标签而非可迭代对象axis0/index或1/columns从哪个轴删除默认0行index/columns标签或列表替代labels axis的写法df.drop(columnssex)等价于df.drop(sex, axis1)levelint 或 level 名针对 MultiIndex只从指定层删除标签errorsraise默认或ignoreignore时静默跳过不存在的标签其余标签照常删除两个与当前仓库版本直接相关的注意点返回新对象。drop默认返回副本文档字符串中inplace参数已标注自 3.1.0 起弃用、将在 pandas 4.0 移除见 PDEP-8所以新代码应始终写成tips tips.drop(sex, axis1)的形式而不是依赖就地修改。缺失标签的行为由errors控制。默认raise下删除不存在的列会抛KeyErrorerrorsignore适合若存在则删除的防御式清洗。这与 SAS 的drop变量不存在时仅警告语义并不完全相同跨工具迁移时需显式选择errors参数。删除多列可合并为一次调用tips.drop([sex, day], axis1)。4. 操作三重命名列Rename a column片段给出的写法是tips.rename(columns{total_bill: total_bill_2})columns接收一个{旧名: 新名}字典返回列名替换后的新 DataFrame未出现在字典中的列保持原名。DataFrame.rename 与drop同属返回新对象一族 API若需同时重命名行索引可另传index参数或mapper此处只涉及列级重命名。重命名一个常见的替代思路是直接替换列索引对象tips.columns [...]但从仓库当前版本的inplace弃用方向PDEP-8来看优先使用rename这类返回新对象的函数式写法更稳妥。5. 跨工具对照SAS / Stata / 电子表格中的同一批操作includes/column_selection.rst存在的意义正是把三篇对比文档中的列选择章节统一为同一组 pandas 代码。将各工具原文与 pandas 写法并排对照如下。SASDATA 步骤的 keep / drop / renamecomparison_with_sas.rst 中给出的 SAS 写法是data tips; set tips; keep sex total_bill tip; run; data tips; set tips; drop sex; run; data tips; set tips; rename total_billtotal_bill_2; run;对应的 pandas 写法依次为tips[[sex, total_bill, tip]]、tips.drop(sex, axis1)、tips.rename(columns{total_bill: total_bill_2})。SAS 的DATA步骤会生成新数据集这与 pandas 三个操作都返回新对象、不改原对象的语义方向一致。Stata命令行 keep / drop / renamecomparison_with_stata.rst 中对应命令为keep sex total_bill tip drop sex rename total_bill total_bill_2注意 Stata 的keep与drop是就地作用于当前数据集的而 pandas 的三个操作都返回新 DataFrame从 Stata 迁移到 pandas 时需要显式接收返回值df df.drop(...)否则修改会丢失。电子表格隐藏、删除、引用与改表头comparison_with_spreadsheets.rst 指出电子表格中选择列的常见手段有四种隐藏列不真删、删除列、把某个工作表的一段列引用到另一张表、以及直接修改表头行第一个单元格的文字来完成重命名。pandas 侧的对应关系是引用一段列到新工作表 →tips[[sex, total_bill, tip]]列子集投影删除列 →tips.drop(sex, axis1)改表头文字 →tips.rename(columns{total_bill: total_bill_2})。电子表格隐藏列并不移除数据没有精确的 pandas 等价物若目标是导出时少一列直接用投影或drop更符合数据即代码的显式风格。6. 小结与使用要点把 includes/column_selection.rst 的三行操作归纳成一张速查表目的pandas 写法返回关键行为源码依据保留部分列tips[[sex, total_bill, tip]]新 DataFrame列表标签严格匹配缺失即KeyError结果列按列表排序getitem删除一列tips.drop(sex, axis1)新 DataFrame可加errorsignoreinplace已弃用drop重命名列tips.rename(columns{total_bill: total_bill_2})新 DataFrame字典式映射未命名列不变rename三条实践要点始终接收返回值。三个操作都不会修改原 DataFrame且当前版本的inplace关键字已被弃用链式接收df df.drop(...)是唯一推荐写法。单列取 Series、多列取 DataFrame。tips[sex]返回 Seriestips[[sex]]返回 DataFrame投影后继续做列操作时注意类型差异。跨工具迁移时对齐严格 vs 宽容语义。SAS/Stata 中删除不存在的变量通常只是告警或报错pandas 需通过errorsignore显式选择宽容模式而列表取列则始终是严格匹配。本文所有代码与行为描述基于当前仓库的文档与源码可直接对照 comparison 系列文档 及 frame.py 进一步阅读。【免费下载链接】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

相关推荐

基于马鞍波SPWM调制与多闭环协同控制的800V维也纳整流器性能研究(Simulink仿真实现)

基于马鞍波SPWM调制与多闭环协同控制的800V维也纳整流器性能研究(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…

📅 2026/9/18 7:59:39
【并网】风光储氢共交流母线、PEM电解水制氢系统与负荷的协调运行仿真(Simulink仿真实现)

【并网】风光储氢共交流母线、PEM电解水制氢系统与负荷的协调运行仿真(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…

📅 2026/9/18 7:59:39
基于101电平的模块化多电平换流器MMC双端MMC-HVDC直流输电系统仿真模型(Simulink仿真实现)

基于101电平的模块化多电平换流器MMC双端MMC-HVDC直流输电系统仿真模型(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…

📅 2026/9/18 7:59:39
MORE NEWS

更多资讯

📰

一道披萨切块题,带你掌握MATLAB递推与公式化建模

有一类MATLAB题,看起来毫无技术含量,做完却让人记很久。“pizza”就是其中一道。我最早是在MathWorks的在线练习Cody上看到它的:题目说明只有一句话,大致意思是有一张圆形披萨,你一刀一刀切下去,每刀都是直…

📰

Agent Skills跨平台实战:架构设计、性能优化与安全边界全解析

开篇先聊点实际的:我最近被问得最多的一个问题,就是“Agent Skills到底是不是又一轮概念炒作”。问这话的人,多半是被各种AI新闻刷到麻木的老开发,也有刚入行想押注方向的年轻人。我的回答很直接:如果你把Agent看成一个…

📰

RAG与知识工程驱动的FTTR测试AI提效方案

简介:一份基于AI的端到端测试开发提效方案设计文档,来自中兴通讯测试域AI应用负责人的实践分享,面向具备软件测试基础、尤其关注通信行业测试效率的研发人员与技术管理者。资料聚焦从传统单智能网关到FTTR组网转变带来的复杂测试挑战&#xf…

📰

BabelDOC 离线部署指南:如何在内网 10 分钟跑通 PDF 翻译

BabelDOC 离线部署指南:如何在内网 10 分钟跑通 PDF 翻译 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC BabelDOC 是一个开源的 PDF 翻译库,负责在保留版式的前提下输出…

📰

Modbus RTU通讯崩溃?90%问题出在物理层

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

📰

MATLAB实现兰伯特问题的航天轨道设计与优化

1. 兰伯特问题概述:航天轨道设计的数学基石兰伯特问题(Lamberts Problem)是航天动力学中经典的轨道转移问题,核心是求解在两个已知位置向量之间、在给定时间内完成转移所需的轨道参数。这个问题由瑞士数学家约翰海因里希兰伯特在1…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬